СПРАВОЧНИК ПО VIM  Брам Мооленаар

Краткий справочник

Примечание: N указывает, что перед командой может быть использовано число.

Перемещение влево-вправо
h N  h влево (также: CTRL-H, <BS>, или <Left>)
l N  l вправо (также: <Space> or <Right>)
0 0 к первому символу строки (also: <Home>)
^ ^ к первому непустому символу строки
$ N  $ к последнему символу строки (на N-1 строк ниже) (также: <End>)
g0 N  g0 к первому символу в строке экрана (отличается от "0" если строка переносится)
g^ N  g^ к первому непустому символу в строке экрана (отличается от "^" если строка переносится)
g$ N  g$ к последнему символу в строке экрана (отличается от "$" если строка переносится)
gm N  gm к середине экранной строки
bar N  | к колонке N (по умолчанию: 1)
f N  f{char} к N-ому появлению {char} справа
F N  F{char} к N-ому появлению {char} слева
t N  t{char} к месту перед N-ным появлением {char} справа
T N  T{char} к месту перед N-ным появлением {char} слева
; N  ; повторить последнее "f", "F", "t" или "T" N раз
, N  , повторить последнее "f", "F", "t" или "T" N раз в противоположном направлении
Перемещение вверх-вниз
k N  k вверх на N строк (также: CTRL-P и <Up>)
j N  j вниз на N строк (также: CTRL-J, CTRL-N, <NL> и <Down>)
- N  - вверх на N строк, на первый непустой символ
+ N  + вниз на N строк, на первый непустой символ (также: CTRL-M и <CR>)
_ N  _ вниз на N-1 строк, на первый непустой символ
G N  G переход к строке N (по умолчанию к последней строке), на первый непустой символ
gg N  gg переход к строке N (по умолчанию к первой строке), на первый непустой символ
N% N  % переход к строке N процентов ниже в файле.  N должно быть указано, иначе считается, что это команда |%|.
gk N  gk N экранных строк вверх (отличается от "k" если строка переносится)
gj N  gj N экранных строк вниз (отличается от "j" если строка переносится)
Перемещение по фрагментам текста
w N  w N слов вперёд
W N  W N разделённых пробелами |СЛОВ| вперёд
e N  e вперёд к концу N-ного слова
E N  E вперёд к концу N-ного разделённого пробелами |СЛОВА|.
b N  b N слов назад
B N  B N разделённых пробелами |СЛОВ| назад
ge N  ge назад к концу N-ного слова
gE N  gE назад к концу N-ного разделённого пробелами |СЛОВА|
) N  ) N предложений вперёд
( N  ( N предложений назад
} N  } N абзацев вперёд
{ N  { N абзацев назад
]] N  ]] N разделов вперёд, к началу раздела
[[ N  [[ N разделов назад, к началу раздела
][ N  ][ N разделов вперёд, в конец раздела
[] N  [] N разделов назад, в конец раздела
[( N  [( N раз назад к незакрытой '('
[{ N  [{ N раз назад к незакрытой '{'
[m N  [m N раз назад к началу метода (для Java)
[M N  [M N раз назад в конец метода (для Java)
]) N  ]) N раз вперёд к незакрытой ')'
]} N  ]} N раз вперёд к незакрытой '}'
]m N  ]m N раз вперёд к началу метода (для Java)
]M N  ]M N раз вперёд в конец метода (для Java)
[# N  [# N раз назад к незакрытому "#if" или "#else"
]# N  ]# N раз вперёд к незакрытому "#else" или "#endif"
[star N  [* N раз назад к началу комментария "/*"
]star N  ]* N раз вперёд в конец комментария "*/"
Поиск по шаблонам
/ N  /{шаблон}[/[смещение]]<CR> поиск вперёд к N-ному появлению {шаблона}
? N  ?{pattern}[?[смещение]]<CR> поиск назад к N-ному появлению {шаблона}
/<CR> N  /<CR> повторить последний поиск, в прямом направлении
?<CR> N  ?<CR> повторить последний поиск, в обратном направлении
n N  n повторить последний поиск
N N  N повторить последний поиск, в обратном направлении
* N  * искать вперёд по имени под курсором
# N  # искать назад по имени под курсором
g* N  g* как "*", но находить и частичные соответствия
g# N  g# как "#", но находить и частичные соответствия
gd gd перейти к локальному объявлению имени под курсором
gD gD перейти к глобальному объявлению имени под курсором

шаблон

Специальные символы в шаблонах для поиска

значение magic nomagic
соответствует любому одиночному символу . \.
соответствует началу строки ^ ^
соответствует <EOL> $ $
соответствует началу слова \< \<
соответствует концу слова \> \>
соответствует одному символу из диапазона [a-z] \[a-z]
соответствует одному символу вне диапазона [^a-z] \[^a-z]
соответствует символу-идентификатору \i \i
то же, но исключая цифры \I \I
соответствует символу ключевого слова \k \k
то же, но исключая цифры \K \K
соответствует символу имени файла \f \f
то же, но исключая цифры \F \F
соответствует печатному символу \p \p
то же, но исключая цифры \P \P
соответствует пробельному символу \s \s
соответствует непробельному символу \S \S
соответствует <Esc> \e \e
соответствует <Tab> \t \t
соответствует <CR> \r \r
соответствует <BS> \b \b
соответствует 0 и более предыдущих атомов * \*
соответствует 1 и более предыдущих атомов \+ \+
соответствует 0 или 1 предыдущему атому \= \=
соответствует от 2 до 5 предыдущих атомов \{2,5} \{2,5}
разделяет две альтернативы \| \|
группирует шаблон в атом \(\) \(\)

смещения в поиске

Смещения, допустимые в командах поиска

[число] [число] строк вниз, в колонке 1
+[число] [число] строк вниз, в колонке 1
-[число] [число] строк вверх, в колонке 1
e[+число] [число] символов справа от конца соответствия
e[-число] [число] символов слева от конца соответствия
s[+число] [число] символов справа от начала соответствия
s[-число] [число] символов слева от начала соответствия
b[+число] то же, что и s[+число] (мнемоника: "begin", "начало")
b[-число] то же, что и s[-число] (мнемоника: "begin", "начало")
;{команда-поиска} затем выполнить {команду-поиска}
Отметки и перемещения
m m{a-zA-Z} пометить текущую позицию отметкой {a-zA-Z}
`a `{a-z} перейти к отметке {a-z} в текущем файле
`A `{A-Z} перейти к отметке {A-Z} в любом файле
`0 `{0-9} перейти к позиции, в которой находились перед выходом из Vim в последний раз
`` `` перейти к позиции перед последним прыжком
`" `" перейти к позиции последнего редактирования файла
`[ `[ перейти к началу предыдущего текста, который был вклеен или находился в работе
`] `] перейти к концу предыдущего текста, который был вклеен или находился в работе
`< `< перейти к началу (предыдущей) Визуальной области
`> `> перейти к концу (предыдущей) Визуальной области
`. `. перейти к позиции последнего изменения в текущем файле
' '{a-zA-Z0-9[]'"<>.} то же, что и `, но на первом непробельном символе в строке
:marks :marks показать активные отметки
CTRL-O N  CTRL-O перейти к более давней (на N) позиции в списке прыжков
CTRL-I N  CTRL-I перейти к более свежей (на N) позиции в списке прыжков
:ju :ju[mps] показать список прыжков
Различные перемещения
% % найти следующую круглую или фигурную скобку, комментарий, "#if"/"#else"/"#endif" на этой строке и перейти к её паре
H N  H перейти к N-ной строке в окне, к первому непробельному символу
M M перейти к средней строке в окне, к первому непробельному символу
L N  L перейти к N-ной строке снизу, к первому непробельному символу
go N  go перейти к N-ному байту в буфере
:go :[диапазон]go[to] [смещение] перейти к [смещение] байту в буфере
Использование меток
:ta :ta[g][!] {метка} Прыжок к метке {метка}
:ta :[число]ta[g][!] Прыжок к метке, которая на [число] свежее в в списке меток
CTRL-] CTRL-] Прыжок к метке под курсором, при условии, что все изменения сохранены
:ts :ts[elect][!] [метка] Показать совпадающие метки и выбрать ту, к которой надо прыгнуть
:tjump :tj[ump][!] [метка] Прыгнуть к метке [метка] или выбрать из списка, если существует несколько соответствий
:tags :tags Показать список меток
CTRL-T N  CTRL-T Прыжок назад от метки, которая на N более старая в списке меток
:po :[число]po[p][!] Прыжок назад от метки, которая на [число] более старая в списке меток
:tnext :[count]tn[ext][!] Прыжок к [число]-й следующей метке в списке меток
:tp :[число]tp[revious][!] Прыжок к [число]-й предыдущей метке в списке меток
:tr :[число]tr[ewind][!] Прыжок к [count]-й метке
:tl :tl[ast][!] Прыжок к последней метке
:ptag :pt[ag] {метка} Показать метку {метка} в окне предварительного просмотра
CTRL-W } CTRL-W } как  CTRL-], но показывать в окне предварительного просмотра
:pts :pts[elect] как ":tselect", но показывать в окне предварительного просмотра
:ptjump :ptj[ump] как ":tjump", но показывать в окне предварительного просмотра
:pclose :pc[lose] закрыть окно предварительного просмотра метки
CTRL-W z CTRL-W z закрыть окно предварительного просмотра метки
Прокрутка
CTRL-E N  CTRL-E окна N строк вниз (по умолчанию: 1)
CTRL-D N  CTRL-D окна N строк вниз (по умолчанию: 1/2 окна)
CTRL-F N  CTRL-F окна N страниц вперёд (т.е. вниз)
CTRL-Y N  CTRL-Y окна N строк вверх (по умолчанию: 1)
CTRL-U N  CTRL-U окна N строк вверх (по умолчанию: 1/2 окна)
CTRL-B N  CTRL-B окна N страниц назад (т.е. вверх)
z<CR> z<CR> или zt обновить, поместив текущую строку вверху окна
z. z. или zz обновить, поместив текущую строку в середине окна
z- z- или zb обновить, поместив текущую строку внизу окна
Следующие команды работают только если опция 'wrap' отключена:
zh N  zh прокрутка экрана на N символов вправо
zl N  zl прокрутка экрана на N символов влево
zH N  zH прокрутка экрана на пол-экрана вправо
zL N  zL прокрутка экрана на пол-экрана влево
Вставка текста
a N  a добавить текст после курсора (N раз)
A N  A добавить текст в конце строки (N раз)
i N  i вставить текст перед курсором (N раз) (также: <Insert>)
I N  I вставить текст перед первым непробельным символом строки (N раз)
gI N  gI вставить текст в колонке 1 (N раз)
o N  o открыть новую строку под текущей строкой, добавить текст (N раз)
O N  O открыть новую строку над текущей строкой, добавить текст (N раз)
:startinsert :star[tinsert][!] перейти в режим Вставки, если указан [!], то сделать добавление
в режиме Визуального блока:
v_b_I I вставить один и тот же текст перед каждой из выделенных строк
v_b_A A добавить один и тот же текст после каждой из выделенных строк
Кнопки режима Вставки

Алфавитный список команд, доступных в режиме Вставки

выход из режима Вставки:

i_<Esc> <Esc> завершить режим Вставки, вернуться в Обычный режим
i_CTRL-C CTRL-C как <Esc>, но без использования сокращений
i_CTRL-O CTRL-O {команда} выполнить {команду} и вернуться в режим Вставки
перемещение:
i_<Up> кнопки курсора перемещение курсора влево/вправо/вверх/вниз
i_<S-Left> shift-left/right одно слово вправо/влево
i_<S-Up> shift-up/down один экран вперед/назад
i_<End> <End> поместить курсор после последнего символа в строке
i_<Home> <Home> поместить курсор к первому символу в строке
Специальные кнопки в режиме Вставки
i_CTRL-V CTRL-V {символ}.. вставить литерал как есть, или ввести десятичное значение байта
i_<NL> <NL> или <CR> или CTRL-M или CTRL-J начать новую строку
i_CTRL-E CTRL-E вставить символы, расположенные ниже курсора
i_CTRL-Y CTRL-Y вставить символы, расположенные выше курсора
i_CTRL-A CTRL-A вставить текст, вставленный перед этим
i_CTRL-@ CTRL-@ вставить текст, вставленный перед этим и выйти из режима Вставки
i_CTRL-R CTRL-R {0-9a-z%#:.-="} вставить содержимое регистра
i_CTRL-N CTRL-N вставить следующее совпадение идентификатора перед курсором
i_CTRL-P CTRL-P вставить предыдущее совпадение идентификатора перед курсором
i_CTRL-X CTRL-X ... завершить слово перед курсором различными способами
i_<BS> <BS> или CTRL-H удалить символ перед курсором
i_<Del> <Del> удалить символ под курсором
i_CTRL-W CTRL-W удалить слово перед курсором
i_CTRL-U CTRL-U удалить все символы, введённые в текущей строке.
i_CTRL-T CTRL-T вставить один отступ перед текущей строкой
i_CTRL-D CTRL-D удалить один отступ перед текущей строкой
i_0_CTRL-D 0 CTRL-D удалить все отступы в текущей строке
i_^_CTRL-D ^ CTRL-D удалить все отступы в текущей строке и восстановить отступы в следующей строке
Диграфы
:dig :dig[raphs] показать текущий список диграфов
:dig :dig[raphs] {симв1}{симв2} {число} ... добавить диграф(ы) к списку
В режиме Вставки или командной строки:
i_CTRL-K CTRL-K {симв1} {симв2} введите диграф
i_диграф {char1} <BS> {char2} введите диграф, если установлена опция 'digraph'
Особые случаи вставки
:r :r [файл] вставить содержимое [файла] ниже курсора
:r! :r! {команда} вставить содержимое стандартного вывода {команды} ниже курсора
Удаление текста
x N  x удалить N символов под курсором и после курсора
<Del> N  <Del> удалить N символов под курсором и после курсора
X N  X удалить N символов перед курсором
d N  d{перемещение} удалить текст над которым осуществлено {перемещение}
v_d {визуально}d удалить выделенный текст
dd N  dd удалить N строк
D N  D удалить до конца строки (и еще N-1 строк)
J N  J соединить N-1 строк (удалить <EOL>)
v_J {визуально}J соединить выделенные строки
gJ N  gJ как "J", но без вставки пробелов
v_gJ {визуально}gJ как "{визуально}J", но без вставки пробелов
:d :[диапазон]d [x] удалить [диапазон] строк [в регистр x]
Копирование и перемещение текста
кавычка "{символ} использовать регистр {символ} для последующей операции удаления, копирования или вклейки
:reg :reg показать содержимое всех регистров
:reg :reg {арг} показать содержимое всех регистров, указанных в {арг}
y N  y{motion} скопировать в регистр текст, над которым произведено {перемещение}
v_y {визуально}y скопировать выделенный текст в регистр
yy N  yy скопировать в регистр N строк
Y N  Y скопировать в регистр N строк
p N  p вклеить содержимое регистра после курсора (N раз)
P N  P вклеить содержимое регистра перед курсором (N раз)
]p N  ]p как p, но с применением отступов к текущей строке
[p N  [p как P, но с применением отступов к текущей строке
gp N  gp как p, но с перемещением курсора к точке после нового текста
gP N  gP как P, но с перемещением курсора к точке после нового текста
Изменение текста
r N  r{символ} заменить N символов {символом}
gr N  gr{символ} заменить N символов без изменения внешнего вида текста
R N  R перейти в режим Замены (повторить введённый текст N раз)
gR N  gR перейти в режим виртуальной Замены: похоже на обычный режим замены, но без изменения внешнего вида текста
v_b_r {визуально}r{символ} в режиме Визуального блока: заменить каждый символ выделенного текста {символом} (изменить = удалить текст и перейти в режим вставки)
c N  c{перемещение} изменить текст, к которому применено {перемещение}
v_c {визуально}c изменить выделенный текст
cc N  cc изменить N строк
S N  S изменить N строк
C N  C изменить текст до конца строки (и еще N-1 строк)
s N  s изменить N символов
v_b_c {визуально}c в режиме Визуального блока: Изменить каждую из выделенных строк и перейти к вводу текста
v_b_C {визуально}C в режиме Визуального блока: Изменить каждую из выделенных строк до конца строки и перейти к вводу текста
~ N  ~ изменить регистр у N символов, перемещая курсор вперёд
v_~ {визуально}~ изменить регистр выделенного текста
v_u {визуально}u написать выделенный текст в нижнем регистре (строчными)
v_U {визуально}U написать выделенный текст в верхнем регистре (прописными)
g~ g~{перемещение} изменить регистр у текста, к которому применено {перемещение}
gu gu{перемещение} написать текст, к которому применено {перемещение}, в нижнем регистре (строчными)
gU gU{перемещение} написать текст, к которому применено {перемещение}, в верхнем регистре (прописными)
v_g? {визуально}g? преобразовать выделенный текст по алгоритму кодирования rot13
g? g?{перемещение} преобразовать текст, к которому применено {перемещение}, по алгоритму кодирования rot13
CTRL-A N  CTRL-A добавить N к числу в позиции курсора или после него
CTRL-X N  CTRL-X вычесть N из числа в позиции курсора или после него
< N  <{перемещение} переместить строки, к которым применено {перемещение} на ширину одного отступа влево
<< N  << переместить N строк на ширину одного отступа влево
> N  >{перемещение} переместить строки, к которым применено {перемещение} на ширину одного отступа вправо
>> N  >> переместить N строк на ширину одного отступа вправо
gq N  gq{перемещение} форматировать строки, к которым применено {перемещение} на ширину 'textwidth'
:ce :[диапазон]ce[nter] [ширина] выровнять строки в [диапазоне] по центру
:le :[диапазон]le[ft] [отступ] выровнять строки в [диапазоне] (с [отступом]) по левому краю
:ri :[диапазон]ri[ght] [ширина] выровнять строки в [диапазоне] по правому краю
Сложные изменения
! N  !{перемещение}{команда}<CR> фильтровать строки, к которым применено перемещение, при помощи {команды}
!! N  !!{команда}<CR> фильтровать N строк при помощи {команды}
v_! {визуально}!{команда}<CR> фильтровать выделенный текст при помощи {команды}
:диапазон! :[диапазон]! {команда}<CR> фильтровать строки в [диапазоне] при помощи {команды}
= N  ={перемещение} фильтровать строки, к которым применено перемещение, при помощи программы 'equalprg'
== N  == фильтровать N строк при помощи программы 'equalprg'
v_= {визуально}= фильтровать выделенные строки при помощи программы 'equalprg'
:s :[диапазон]s[ubstitute]/{шаблон}/{строка}/[g][c] заменить соответствие {шаблону} на {строку} в [диапазоне] строк;
  [g] заменяет все соответствия {шаблону};
  [c] требует подтверждения каждой замены
:s :[диапазон]s[ubstitute] [g][c] повторить предыдущую команду ":s" с новым диапазоном и опциями
& & повторить предыдущую команду ":s" на текущей строке без опций
:ret :[диапазон]ret[ab][!] [табуляция] установить 'tabstop' в новое значение и изменить пробелы в соответствии с новым значением
Визуальный режим (список команд Визуального режима)
v v начать выделение символов
V V начать выделение строк
CTRL-V CTRL-V начать выделение блока
v_o o переместить курсор в начало выделенной области
gv gv начать выделение в предыдущей визуальной области
v_v v начать или прекратить выделение символов
v_V V начать или прекратить выделение строк
v_CTRL-V CTRL-V начать или прекратить выделение блока

Переместите курсор и примените к выделенному тексту требуемую команду

Текстовые объекты (только в Визуальном режиме или после оператора)
v_aw N  aw Выделить "слово"
v_iw N  iw Выделить "внутреннее слово"
v_aW N  aW Выделить |СЛОВО|"
v_iW N  iW Выделить внутреннее |СЛОВО|"
v_as N  as Выделить "предложение"
v_is N  is Выделить "внутреннее предложение"
v_ap N  ap Выделить "абзац"
v_ip N  ip Выделить "внутренний абзац"
v_ab N  ab Выделить "блок" (от "[(" до "])")
v_ib N  ib Выделить "внутренний блок" (от "[(" до "])")
v_aB N  aB Выделить "Блок" (от "[{" до "]}")
v_iB N  iB Выделить "внутренний Блок" (от "[{" до "]}")
Повторение команд
. N  . повторить последнее изменение (с новым числом N)
q q{a-z} записать набранные символы в регистр {a-z}
q q{A-Z} записать набранные символы, добавляя к регистру {a-z}
q q закончить запись
@ N  @{a-z} выполнить содержимое регистра {a-z} (N раз)
@@ N  @@ повторить предыдущую команду @{a-z} (N раз)
:@ :@{a-z} выполнить содержимое регистра {a-z} в виде команды Ex
:@@ :@@ повторить предыдущую команду :@{a-z}
:g :[диапазон]g[lobal]/{шаблон}/[команда] Выполнить команду Ex [команда] (по умолчанию: ":p") на строках в [диапазоне] учитывая соответствие {шаблону}.
:g :[диапазон]g[lobal]!/{шаблон}/[команда] Выполнить команду Ex [cmd] (по умолчанию: ":p") на строках в [диапазоне] где НЕТ соответствия {шаблону}.
:so :so[urce] {файл} Прочитать команды Ex из {файла}.
:so :so[urce]! {файл} Прочитать команды Vim из {файла}.
:sl :sl[eep] [sec] ничего не делать в течение [sec] секунд
gs N  gs ничего не делать в течение N секунд
Привязки клавиш
:map :ma[p] {lhs} {rhs} Привязать {lhs} к {rhs} в Обычном и Визуальном режимах.
:map! :ma[p]! {lhs} {rhs} Привязать {lhs} к {rhs} в режимах Вставки и  командной строки.
:noremap :no[remap][!] {lhs} {rhs} То же, что и ":map", но без повторной привязки для {rhs}
:unmap :unm[ap] {lhs} Удалить привязку {lhs} для Обычного и Визуального режимов.
:unmap! :unm[ap]! {lhs} Удалить привязку {lhs} для режимов Вставки и командной строки.
:map_l :ma[p] [lhs] Показать привязки (начиная с [lhs]) для Обычного и Визуального режимов.
:map_l! :ma[p]! [lhs] Показать привязки (начиная с [lhs]) для режимов Вставки и командной строки.
:cmap :cmap/:cunmap/:cnoremap как ":map!"/":unmap!"/":noremap!", но только для режима командной строки
:imap :imap/:iunmap/:inoremap как ":map!"/":unmap!"/":noremap!", но только для режима Вставки
:nmap :nmap/:nunmap/:nnoremap как ":map"/":unmap"/":noremap", но только для Обычного режима
:vmap :vmap/:vunmap/:vnoremap как ":map"/":unmap"/":noremap", но только для Визуального режима
:omap :omap/:ounmap/:onoremap как ":map"/":unmap"/":noremap", но только для режима ожидания оператора
:mapc :mapc[lear] удалить привязки для обычного и Визуального режимов
:mapc :mapc[lear]! удалить привязки для режимов Вставки и командной строки
:imapc :imapc[lear] удалить привязки для режима Вставки
:vmapc :vmapc[lear] удалить привязки для Визуального режима
:omapc :omapc[lear] удалить привязки для режима ожидания оператора
:nmapc :nmapc[lear] удалить привязки для обычного режима
:cmapc :cmapc[lear] удалить привязки для режима командной строки
:mkexrc :mk[exrc][!] [файл] записать текущие привязки, сокращения и  настройки в [файл] (по умолчанию: ".exrc"; добавьте ! для того, чтобы переписать существующий файл).
:mkvimrc :mkv[imrc][!] [файл] то же, что и ":mkexrc", но с ".vimrc" по умолчанию
:mksession :mks[ession][!] [файл] то же, что и ":mkvimrc", но с сохранением существующих файлов, окон и т.д., чтобы продолжить текущую сессию позднее
Сокращения
:abbreviate :ab[breviate] {lhs} {rhs} добавить сокращение {lhs} для {rhs}
:abbreviate :ab[breviate] {lhs} показать сокращения, начинающиеся с {lhs}
:abbreviate :ab[breviate] показать все сокращения
:unabbreviate :una[bbreviate] {lhs} удалить сокращение {lhs}
:noreabbrev :norea[bbrev] [lhs] [rhs] как ":ab", но без переопределения привязки [rhs]
:iabbrev :iab/:iunab/:inoreab как ":ab", но только для режима Вставки
:cabbrev :cab/:cunab/:cnoreab как ":ab", но только для режима командной строки
:abclear :abc[lear] удалить все сокращения
:cabclear :cabc[lear] удалить все сокращения для режима командной строки
:iabclear :iabc[lear] удалить все сокращения для режима Вставки
Опции
:set :se[t] Показать все изменённые опции.
:set :se[t] all Показать все не-termcap опции.
:set :se[t] termcap Показать все termcap опции.
:set :se[t] {опция} Включить опцию с булевым значением, показать значение числовой или строковой опции.
:set :se[t] no{option} Выключить опцию с булевым значением.
:set :se[t] inv{option} Изменить булево значение опции на обратное.
:set :se[t] {опция}={значение} Установить числовую или строковую опцию в {значение}.
:set :se[t] {опция}+={значение} добавить {значение} к строковой опции или прибавить {значение} к числовой опции
:set :se[t] {опция}-={значение} убрать {значение} из строковой опции, вычесть {значение} из числовой опции
:set :se[t] {опция}? Показать значение {опции}.
:set :se[t] {опция}& Вернуть {опции} значение по умолчанию.
:setlocal :setl[ocal] подобно ":set", но устанавливает локальное значение для опций, у которых есть локальный контекст
:setglobal :setg[lobal] подобно ":set", но устанавливает глобальное значение локальной опции
:fix :fix[del] Установить значение 't_kD' в соответствии со значением 't_kb'.
:options :opt[ions] Открыть окно установки опций, сгруппированных по функциональности, с необходимыми краткими пояснениями и ссылками на справочник.
Краткое пояснение для каждой опции:
'aleph' 'al' ASCII код буквы Алеф (иврит)
'allowrevins' 'ari' разрешить CTRL-_ в режимах вставки и командной строки
'altkeymap' 'akm' второй язык по умолчанию (фарси/иврит)
'ambiwidth' 'ambw' настраивает обработку символов Unicode с непонятной шириной
'antialias' 'anti' Mac OS X: использовать "сглаженные" шрифты
'autochdir' 'acd' изменение каталога на каталог, в котором находится загруженный в активном окне файл
'arabic' 'arab' использовать в качестве второго языка по умолчанию арабский.
'arabicshape' 'arshape' выполнять изменение формы арабских символов
'autoindent' 'ai' наследовать отступ для новой строки
'autoread' 'ar' автоматически читать файл, если изменён вне Vim
'autowrite' 'aw' автоматически записывать файл при изменении
'autowriteall' 'awa' как 'autowrite', но работает с большим числом команд
'background' 'bg' фон "dark" или "light", используется для подсветки синтаксиса
'backspace' 'bs' определяет режима работы backspace в начале строки
'backup' 'bk' сохранять резервную копию файла при сохранении
'backupcopy' 'bkc' сохранять резервную копию, не переименовывать файл
'backupdir' 'bdir' список каталогов для резервных копий
'backupext' 'bex' расширения для резервных копий
'backupskip' 'bsk' не делать резервных копий для файлов, соответствующих шаблону
'balloondelay' 'bdlay' задержка в миллисекундах перед выдачей пузыря
'ballooneval' 'beval' включить пузырь
'binary' 'bin' читать/записывать/редактировать в двоичном режиме
'bioskey' 'biosk' MS-DOS: использовать для кнопок вызовы bios
'bomb'   добавлять к файлу метку Byte Order Mark
'breakat' 'brk' символы, на которых возможен перенос строки
'browsedir' 'bsdir' каталог, в котором следует запустить проводник по файловой системе
'bufhidden' 'bh' что делать, если буфер не находится в окне
'buflisted' 'bl' следует ли показывать буфер в списке буферов
'buftype' 'bt' настройка специального буфера
'casemap' 'cmp' определяет правила изменения регистра символов
'cdpath' 'cd' список каталогов для поиска ":cd"
'cedit'   клавиша для открытия окна редактирования командной строки
'charconvert' 'ccv' выражение для преобразования кодировок символов
'cindent' 'cin' выполнять форматирование текста в стиле C
'cinkeys' 'cink' кнопки, вызывающие появление отступа, при включённом 'cindent'
'cinoptions' 'cino' опции, касающиеся форматирования отступов при включённом 'cindent'
'cinwords' 'cinw' слова, на которых 'si' и 'cin' добавляют отступ
'clipboard' 'cb' использовать системный буфер обмена в качестве безымянного регистра
'cmdheight' 'ch' количество строк для командной строки
'cmdwinheight' 'cwh' высота окна редактирования командной строки
'columns' 'co' количество колонок в экране
'comments' 'com' шаблоны для указания начала комментариев
'commentstring' 'cms' шаблон для комментария; используется для маркера складки
'compatible' 'cp' как можно более Vi-совместимое поведение
'complete' 'cpt' указывает как работает дополнение в режиме Вставки
'confirm' 'cf' запрос о том, что делать с несохранёнными и открытыми только для чтения файлами
'conskey' 'consk' читать коды кнопок напрямую с консоли (только для MS-DOS)
'copyindent' 'ci' заставить 'autoindent' использовать существующую структуру отступов
'cpoptions' 'cpo' флаги для Vi-совместимого поведения
'cscopepathcomp' 'cspc' сколько компонентов пути следует показывать
'cscopeprg' 'csprg' команда для cscope
'cscopequickfix' 'csqf' позволяет использовать окно быстрых исправлений для отображения результатов работы cscope.
'cscopetag' 'cst' использовать cscope для команд меток
'cscopetagorder' 'csto' определяет порядок поиска ":cstag"
'cscopeverbose' 'csverb' показывать сообщения при добавлении в базу cscope
'debug'   "msg" показывает все отладочные сообщения
'define' 'def' шаблон для поиска определений макросов
'delcombine' 'deco' удалять совмещенные (мультибайтные) символы по одному
'dictionary' 'dict' список имён файлов для дополнения по ключевому слову
'diff'   использовать режим отличий diff для текущего окна
'diffexpr' 'dex' выражение для создания файла отличий diff
'diffopt' 'dip' опции для режима отличий diff
'digraph' 'dg' разрешить ввод диграфов в режиме Вставки
'directory' 'dir' список каталогов для своп-файлов
'display' 'dy' список флагов для отображения текста
'edcompatible' 'ed' включение или выключение флагов для команды ":substitute"
'eadirection' 'ead' направление работы 'equalalways'
'encoding' 'enc' внутренняя кодировка Vim
'endofline' 'eol' записывать <EOL> для последней строки файла
'equalalways' 'ea' автоматически делать окна одного размера
'equalprg' 'ep' внешняя программа для команды "="
'errorbells' 'eb' выдавать звуковой сигнал при сообщениях об ошибках
'errorfile' 'ef' имя файла с ошибками для по умолчанию Быстрого Исправления
'errorformat' 'efm' описание строк в файле ошибок
'esckeys' 'ek' распознавать функциональные кнопки в режиме Вставки
'eventignore' 'ei' события, которые игнорируются автокомандами
'expandtab' 'et' использовать пробелы при вставке <Tab>
'exrc' 'ex' читать .vimrc и .exrc в текущем каталоге
'fileencoding' 'fenc' кодировка файла для мультибайтного текста
'fileencodings' 'fencs' список автоматически распознаваемых кодировок файла
'fileformat' 'ff' формат файла для операций I/O
'fileformats' 'ffs' автоматически распознаваемые значения для 'fileformat'
'filetype' 'ft' тип файла, используется автокомандами
'fillchars' 'fcs' символы, используемые для отображения специальных данных
'fkmap' 'fk' привязка клавиатуры для фарси
'foldclose' 'fcl' закрывать складку, если курсор выходит за её пределы
'foldcolumn' 'fdc' ширина колонки для индикации складок
'foldenable' 'fen' показать все складки открытыми
'foldexpr' 'fde' выражение, используемое при 'foldmethod' установленном в "expr"
'foldignore' 'fdi' игнорировать строки, если 'foldmethod' установлен в "indent"
'foldlevel' 'fdl' закрыть складки с уровнем выше указанного
'foldlevelstart' 'fdls' установка 'foldlevel' при начале редактировании файла
'foldmarker' 'fmr' маркеры, используемые при 'foldmethod' установленном в "marker"
'foldmethod' 'fdm' тип складки
'foldminlines' 'fml' минимальное число строк для закрытия складки
'foldnestmax' 'fdn' максимальная глубина складки
'foldopen' 'fdo' команды, для которых открывается складка
'foldtext' 'fdt' выражение, которое надо показывать для закрытых складок
'formatoptions' 'fo' как выполнять автоматическое форматирование
'formatprg' 'fp' имя внешней программы для команды "gq"
'gdefault' 'gd' флаг 'g' команды ":substitute" по умолчанию включён
'grepformat' 'gfm' формат вывода 'grepprg'
'grepprg' 'gp' программа, используемая для ":grep"
'guicursor' 'gcr' GUI: установки для формы и мигания курсора
'guifont' 'gfn' GUI: Имя используемого шрифта
'guifontset' 'gfs' GUI: Имена мультибайтных шрифтов
'guifontwide' 'gfw' список шрифтов с символами двойной ширины
'guiheadroom' 'ghr' GUI: дополнительная высота в пикселах для окна
'guioptions' 'go' GUI: компоненты и опции, используемые для GUI
'guipty'   GUI: стараться использовать pseudo-tty для команд ":!"
'helpfile' 'hf' настройка полного пути к основному файлу справки
'helpheight' 'hh' минимальная высота нового окна помощи
'helplang' 'hlg' настройка языковых предпочтений для справочника
'hidden' 'hid' не выгружать буфер, если |буфер_был_покинут|.
'highlight' 'hl' установить режим подсветки для различных случаев
'hlsearch' 'hls' подсвечивать совпадения с шаблоном последнего поиска
'history' 'hi' количество командных строк, которое хранится в истории
'hkmap' 'hk' привязка клавиатуры для иврита
'hkmapp' 'hkp' фонетическая привязка клавиатуры для иврита
'icon'   разрешить Vim устанавливать текст для значка окна
'iconstring'   строка для текста значка окна
'ignorecase' 'ic' регистронезависимый поиск по шаблонам
'imactivatekey' 'imak' кнопка для активации метода ввода X
'imcmdline' 'imc' использовать метод ввода при редактировании командной строки
'imdisable' 'imd' отключает использование метода ввода IM во всех режимах
'iminsert' 'imi' использовать :lmap или метод ввода IM в режиме Вставки
'imsearch' 'ims' использовать :lmap или метод ввода IM при наборе шаблона поиска
'include' 'inc' шаблон для поиска файла include
'includeexpr' 'inex' выражение для разбора строки include
'incsearch' 'is' подсвечивать совпадения при наборе шаблона поиска
'indentexpr' 'inde' выражение для вычисления отступа строки
'indentkeys' 'indk' кнопки, вызывающие форматирование отступов с 'indentexpr'
'infercase' 'inf' поправлять регистр соответствия для дополнения по ключевым словам
'insertmode' 'im' начать редактирование файла в режиме Вставки
'isfname' 'isf' символы, входящие в имена файлов и каталогов
'isident' 'isi' символы, входящие в идентификаторы
'iskeyword' 'isk' символы, входящие в ключевые слова
'isprint' 'isp' печатные символы
'joinspaces' 'js' вставлять два пробела после точки при использовании команды join
'key'   пароль для шифровки
'keymap' 'kmp' имя файла с привязкой кнопок клавиатуры
'keymodel' 'km' разрешить начинать/прекращать выделение при помощи кнопок
'keywordprg' 'kp' программа для команды "K"
'langmap' 'lmap' подстановка символов для второго языка
'langmenu' 'lm' язык меню
'laststatus' 'ls' отображение статусной строки для последнего окна
'lazyredraw' 'lz' не обновлять окно во время выполнения макросов
'linebreak' 'lbr' переносить длинные строки на пробелах
'lines'   число строк на экране
'linespace' 'lsp' междустрочное расстояние в пикселах
'lisp'   автоматическое форматирование отступов для Lisp
'lispwords' 'lw' слова, изменяющие форматирование отступов для Lisp
'list'   показывать и
'listchars' 'lcs' символы для режима list
'loadplugins' 'lpl' загружать модули сценариев в начале работы
'magic'   изменяет спецсимволы в шаблонах поиска
'makeef' 'mef' имя файла ошибок для ":make"
'makeprg' 'mp' программа используемая для команды ":make"
'matchpairs' 'mps' пары символов, соответствие которых ищет "%"
'matchtime' 'mat' количество 1/10 секунды, в течение которых отображается соответствие скобок
'maxfuncdepth' 'mfd' максимальная глубина рекурсии для пользовательских функций
'maxmapdepth' 'mmd' максимальная глубина рекурсии для привязок
'maxmem' 'mm' максимальный объем памяти (в Kbyte) для одного буфера
'maxmemtot' 'mmt' максимальный объем памяти (в Kbyte) для всех буферов
'menuitems' 'mis' максимальное число пунктов меню
'modeline' 'ml' поиск режимной строки в начале или конце файла
'modelines' 'mls' количество строк, которое просматривать в поисках режимной строки
'modifiable' 'ma' управление возможностью изменять текст в буфере
'modified' 'mod' буфер был изменён
'more'   прерывать показ списков, если экран полностью заполнен
'mouse'   разрешить использование мыши
'mousefocus' 'mousef' клавиатурный фокус следует за мышью
'mousehide' 'mh' прятать курсор мыши при наборе
'mousemodel' 'mousem' изменяет значение кнопок мыши
'mouseshape' 'mouses' форма курсора мыши в различных режимах
'mousetime' 'mouset' максимальное время между щелчками при двойном нажатии мыши
'nrformats' 'nf' формат чисел, различаемых командой CTRL-A
'number' 'nu' печатать номер строки перед каждой строкой
'osfiletype' 'oft' информация о типе файла, специфичная для операционной системы
'paragraphs' 'para' макросы nroff для разделения параграфов
'paste'   разрешить вклейку текста
'pastetoggle' 'pt' код клавиши для горячего изменения значения 'paste'
'patchexpr' 'pex' выражение для изменения файла с помощью заплатки
'patchmode' 'pm' сохранять самую старую версию файла
'path' 'pa' список каталогов для поиска при использовании "gf" и т.д.
'preserveindent' 'pi' сохранять существующую структуру отступов при переформатировании отступов
'previewheight' 'pvh' высота окна предварительного просмотра
'previewwindow' 'pvw' указывает на окно предварительного просмотра
'printdevice' 'pdev' имя принтера, который следует использовать для :hardcopy
'printencoding' 'penc' кодировка, используемая при печати
'printexpr' 'pexpr' выражение, которое используется для печати файла PostScript при выполнении команды :hardcopy
'printfont' 'pfn' имя шрифта, используемого при печати командой :hardcopy
'printheader' 'pheader' формат заголовка страницы, используемого при печати командой :hardcopy
'printoptions' 'popt' формат вывода :hardcopy
'readonly' 'ro' запретить запись буфера
'remap'   разрешить рекурсивную отработку привязок
'report'   порог для сообщения о количестве измененных строк
'restorescreen' 'rs' Win32: восстановить экран при выходе
'revins' 'ri' вставка символов справа налево
'rightleft' 'rl' окно ориентировано справа налево
'rightleftcmd' 'rlc' определяет команды, которые позволяют использовать набор справа налево при вводе командной строки
'ruler' 'ru' показывать в статусной строке номер строки и колонки, где находится курсор
'rulerformat' 'ruf' настройка формата линейки
'runtimepath' 'rtp' список каталогов для файлов Vim
'scroll' 'scr' количество строк для прокрутки с CTRL-U и CTRL-D
'scrollbind' 'scb' прокручивать окно при прокрутке других окон
'scrolljump' 'sj' минимальное количество строк для прокрутки
'scrolloff' 'so' минимальное количество строк сверху и снизу от курсора
'scrollopt' 'sbo' способ реализации 'scrollbind'
'sections' 'sect' макросы nroff для разделения разделов
'secure'   защищенный режим для чтения .vimrc в текущем каталоге
'selection' 'sel' используемый тип выделения
'selectmode' 'slm' когда использовать режим Выделения вместо Визуального режима
'sessionoptions' 'ssop' настройки для |:mksession|
'shell' 'sh' имя оболочки для выполнения внешних программ
'shellcmdflag' 'shcf' аргументы, с которыми запускается оболочка для выполнения внешней команды
'shellpipe' 'sp' строка для записи вывода ":make" в файл ошибок
'shellquote' 'shq' символ кавычки, в которые заключается команда оболочки
'shellredir' 'srr' строка для записи вывода фильтра во временный файл
'shellslash' 'ssl' использовать прямую косую черту для имен файлов оболочки
'shelltype' 'st' Amiga: влияет на использование оболочки
'shellxquote' 'sxq' как 'shellquote', но включая перенаправление
'shiftround' 'sr' округлять отступ до целых shiftwidth
'shiftwidth' 'sw' количество пробелов для шага (автоматического) форматирования отступов
'shortmess' 'shm' список флагов для уменьшения длины сообщений
'shortname' 'sn' не-MS-DOS: имена файлов в формате 8.3
'showbreak' 'sbr' строка для использования в начале перенесённой строки
'showcmd' 'sc' показывать (частично) команду в статусной строке
'showfulltag' 'sft' показывать полный шаблон метки при дополнении метки
'showmatch' 'sm' кратковременно прыгнуть к соответствующей скобке при вставке новой скобки
'showmode' 'smd' показывать текущий режим в статусной строке
'sidescroll' 'ss' минимальное число колонок для горизонтальной прокрутки
'sidescrolloff' 'siso' минимальное количество колонок слева и справа от курсора
'smartcase' 'scs' не игнорировать регистр, если шаблон содержит символы в верхнем регистре
'smartindent' 'si' "Умное" автоформатирование для программ C
'smarttab' 'sta' использовать 'shiftwidth' при вставке
'softtabstop' 'sts' количество пробелов, которое используется при редактировании
'splitbelow' 'sb' размещать новое окно при разделение под текущим
'splitright' 'spr' размещать новое окно при разделении справа от текущего
'startofline' 'sol' команды перемещают курсор к первому пробелу в строке
'statusline' 'stl' настройки формата статусной строки
'suffixes' 'su' суффиксы, которые игнорируются при множественных соответствиях
'suffixesadd' 'sua' суффиксы, добавляемые при поиске файла
'swapfile' 'swf' использование своп-файла для буфера
'swapsync' 'sws' способ синхронизации своп-файла
'switchbuf' 'swb' поведение редактора при переключении в другой буфер
'syntax' 'syn' загрузка синтаксических правил для текущего буфера
'tabstop' 'ts' количество пробелов, которые использует в файле
'tagbsearch' 'tbs' использование бинарного поиска в файле меток
'taglength' 'tl' количество значимых символов для метки
'tagrelative' 'tr' относительные имена файлов в файле меток
'tags' 'tag' имена файлов, используемые командой tag
'tagstack' 'tgst' поместить метки в стек меток
'term'   имя терминала
'termbidi' 'tbidi' опция используется для указания, что обработкой двунаправленного текста занимается терминал
'termencoding' 'tenc' кодировка, используемая терминалом
'terse'   сократить некоторые сообщения
'textauto' 'ta' устарело, пользуйтесь 'fileformats'
'textmode' 'tx' устарело, пользуйтесь 'fileformat'
'textwidth' 'tw' максимальная ширина текста при вставке
'thesaurus' 'tsr' список файла тезауруса для дополнения по ключевым словам
'tildeop' 'top' поведение тильды "~" как команды оператора
'timeout' 'to' тайм-аут для привязок и кодов кнопок
'timeoutlen' 'tm' время тайм-аута в миллисекундах
'title'   разрешить Vim устанавливать название окна
'titlelen'   процентное количество 'columns' используемое для названия окна
'titleold'   старое название окна, которое будет восстановлено при выходе
'titlestring'   строка для названия окна Vim
'toolbar' 'tb' GUI: что показывать на панели инструментов
'toolbariconsize' 'tbis' задаёт размер значков на инструментальной панели (только для GTK 2)
'ttimeout'   тайм-аут для привязок
'ttimeoutlen' 'ttm' тайм-аут для кодов кнопок в миллисекундах
'ttybuiltin' 'tbi' использовать встроенный termcap перед внешним
'ttyfast' 'tf' указывает на быстрое соединение с терминалом
'ttymouse' 'ttym' тип генерируемых кодов мыши
'ttyscroll' 'tsl' максимальное число строк для прокрутки
'ttytype' 'tty' синоним 'term'
'undolevels' 'ul' максимальное количество изменений, которые можно отменить
'updatecount' 'uc' прочищать своп файл после данного количества символов
'updatetime' 'ut' прочищать своп файл по истечении заданного количества миллисекунд
'verbose' 'vbs' выдавать информативные сообщения
'viewdir' 'vdir' каталог для записи файлов командой :mkview
'viewoptions' 'vop' определяет информацию для сохранения :mkview
'viminfo' 'vi' использовать .viminfo при запуске и выходе
'virtualedit' 've' использование виртуального редактирования
'visualbell' 'vb' использование визуального сигнала вместо звукового
'warn'   выдавать предупреждение для команды оболочки при изменении буфера
'weirdinvert' 'wi' для терминалов со странностями в инверсном видеорежиме
'whichwrap' 'ww' разрешить указанным кнопкам пересекать границы строк
'wildchar' 'wc' символ подстановки для командной строки
'wildcharm' 'wcm' как 'wildchar', но работает также с привязками
'wildignore' 'wig' файлы, соответствующие данному шаблону не дополняются
'wildmenu' 'wmnu' использовать меню для дополнения командной строки
'wildmode' 'wim' режим для расширения подстановки 'wildchar' в командной строке
'winaltkeys' 'wak' когда windows перехватывает кнопку ALT
'winheight' 'wh' минимальное количество строк в текущем окне
'winfixheight' 'wfh' позволяет сохранять высоту окон при открытии или закрытии других окон
'winminheight' 'wmh' минимальное количество строк в окнах
'winminwidth' 'wmw' минимальное количество колонок в окнах
'winwidth' 'wiw' минимальное количество колонок в текущем окне
'wrap'   перенос длинных строк на следующую строку экрана
'wrapmargin' 'wm' количество символов справа, при которых происходит перенос строки
'wrapscan' 'ws' перенос поиска в конце файла
'write'   разрешить запись в файл
'writeany' 'wa' запись в файл без необходимости добавления "!"
'writebackup' 'wb' делать резервную копию перед записью файла
'writedelay' 'wd' задержка в миллисекундах после каждого символа (для отладки)
Команды отмены и повторного выполнения
u N  u отменить последние N изменений
CTRL-R N  CTRL-R восстановить последние N отменённых изменений
U U восстановить последнюю изменённую строку
Внешние команды
:shell :sh[ell] запуск оболочки
:! :!{команда} выполнить {команду} при помощи оболочки
K K посмотреть ключевое слово под курсором при помощи программы 'keywordprg' (по умолчанию: "man")
Команды для Быстрого Исправления
:cc :cc [nr] показать ошибку номер [nr] (по умолчанию: показать текущую)
:cnext :cn показать следующую ошибку
:cprevious :cp показать предыдущую ошибку
:clist :cl показать все ошибки
:cfile :cf прочитать ошибки из файла 'errorfile'
:cquit :cq выйти без сохранения и вернуть код ошибки (для компилятора)
:make :make [args] выполнить make, прочитать ошибки и перейти к первой ошибке
:grep :gr[ep] [args] выполнить 'grepprg' для поиска соответствий и  перейти к первому соответствию.
Различные команды
CTRL-L CTRL-L Очистить и обновить экран
CTRL-G CTRL-G Показать имя текущего файла (с путём) и позицию курсора
ga ga показать значение символа под курсором в коде ASCII в десятичных, шестнадцатеричных и восьмеричных числах
g_CTRL-G g CTRL-G показать колонку, строку, позицию символа под курсором.
CTRL-C CTRL-C во время поиска: прервать поиск
dos-CTRL-Break CTRL-Break MS-DOS: во время поиска: прервать поиск
<Del> <Del> во время ввода числа перед командой: удалить последний символ
:version :ve[rsion] показать информацию о версии
:mode :mode N MS-DOS: установить режим экрана в N (число, C80, C4350, и т.д.)
:normal :norm[al][!] {команда} Выполнить команду обычного режима
Q Q Перейти в режим "Ex"
:redir :redir >{файл} перенаправить сообщения в {файл}
:silent :silent[!] {команда} выполнить {команду} молча
:confirm :confirm {команда} выйти, записать и т.д., спросив подтверждение в случае несохранённых данных или файлов, открытых только для чтения
:browse :browse {команда} открыть/прочитать/записать файл при помощи системного диалога выбора файлов
Редактирование командной строки
c_<Esc> <Esc> покинуть командную строку (если 'wildchar' установлен в <Esc>, то требуется нажать дважды)
c_CTRL-V CTRL-V {символ} вставка {символа} как есть
c_CTRL-V CTRL-V {число} ввести десятичное значение символа (до трёх цифр)
c_CTRL-K CTRL-K {симв1} {симв2} ввести диграф (См. Диграфы)
c_CTRL-R CTRL-R {0-9a-z"%#:-=} ввести содержимое регистра
c_<Left> <Left>/<Right> перемещение курсора влево/вправо
c_<S-Left> <S-Left>/<S-Right> перемещение курсора влево/вправо на одно слово
c_CTRL-B CTRL-B/CTRL-E перемещение курсора в начало или конец командной строки
c_<BS> <BS> удалить символ перед курсором
c_<Del> <Del> удалить символ под курсором
c_CTRL-W CTRL-W удалить слово перед курсором
c_CTRL-U CTRL-U удалить все символы
c_<Up> <Up>/<Down> восстановить из истории командную строку, начинающуюся с этой команды
c_<S-Up> <S-Up>/<S-Down> восстановить командную строку из истории
:history :his[tory] показать команды, введённые раннее

 Контекстно-зависимое дополнение в командной строке:

c_подстановка 'wildchar' (по умолчанию: <Tab>) выполнять дополнение по шаблону перед курсором. Если возникает несколько вариантов, то подаётся звуковой сигнал и показывается первый вариант; повторный ввод 'wildchar' показывает следующий вариант.
c_CTRL-D CTRL-D показать все имена, соответствующие шаблону перед курсором
c_CTRL-A CTRL-A показать все имена, соответствующие шаблону перед курсором
c_CTRL-L CTRL-L вставить самую длинную часть имён, соответствующую шаблону
c_CTRL-N CTRL-N после 'wildchar' с несколькими соответствиями: перейти к следующему соответствию
c_CTRL-P CTRL-P после 'wildchar' с несколькими соответствиями: перейти к предыдущему соответствию
Диапазоны Ex
:диапазон , разделяет два номера строки
:диапазон ; то же самое, устанавливает курсор на первый номер строки перед интерпретацией второго номера
:диапазон {число} абсолютное значение номера строки
:диапазон . текущая строка
:диапазон $ последняя строка в файле
:диапазон % соответствует 1,$ (весь файл)
:диапазон * соответствует '<,'> (визуальная область)
:диапазон 't позиция отметки t
:диапазон /{шаблон}[/] следующая строка с соответствием {шаблону}
:диапазон ?{шаблон}[?] предыдущая строка с соответствием {шаблону}
:диапазон +[число] добавить [число] к предыдущему номеру строки (по умолчанию: 1)
:диапазон -[число] вычесть [число] из предыдущего номера строки (по умолчанию: 1)
Специальные символы Ex
:bar | разделяет две команды (кроме ":global" и ":!")
:кавычка " начало комментария
:_% % текущее имя файла (в тех случаях, когда требуется имя файла)
:_# #[число] имя соседнего файла [число] (в тех случаях, когда требуется имя файла)

Замечание: следующие четыре символа набираются буквально; это не специальные клавиши!

:<cword> <cword> слово под курсором (в тех случаях, когда требуется имя файла)
:<cWORD> <cWORD> СЛОВО под курсором (в тех случаях, когда требуется имя файла) (см. |СЛОВО|)
:<cfile> <cfile> имя файла под курсором (в тех случаях, когда требуется имя файла)
:<afile> <afile> имя файла для автокоманды (в тех случаях, когда требуется имя файла)
:<sfile> <sfile> имя файла для сценария, считанного командой ":source" (в тех случаях, когда требуется имя файла)
 

После "%", "#", "<cfile>", "<sfile>" или "<afile>"

::p :p полный путь
::h :h голова (без имени файла)
::t :t хвост (только само имя файла)
::r :r корень (без расширения)
::e :e расширение
::s :s/{шабл}/{замена}/ заменить {шабл} на {замену}
  Редактирование файла

Без !: Не выполняется, если текущий буфер изменён.
С !: Отменить все изменения в текущем буфере.

:edit_f :e[dit][!] {файл} Редактировать {файл}.
:edit :e[dit][!] Прочитать текущий файл заново.
:enew :ene[w][!] Редактировать в новом безымянном буфере.
:find :fin[d][!] {файл} Найти {файл} в 'path' и редактировать его.
CTRL-^ N   CTRL-^ Использовать соседний файл N (эквивалентно ":e #N").
gf gf или ]f Редактировать файл, имя которого находится под курсором
:pwd :pwd Показать имя текущего каталога.
:cd :cd [путь] Сменить текущий каталог на [путь].
:cd- :cd - Вернуться в предыдущий текущий каталог.
:file :f[ile] Показать имя текущего файла и позицию курсора.
:file :f[ile] {имя} Установить имя текущего файла в {имя}.
:files :files Показать имена соседних файлов.
Использование списка аргументов
:args :ar[gs] Показать список аргументов, с текущим файлом в "[]".
:all :all  или :sall Открыть окно для каждого файла в списке аргументов.
:wn :wn[ext][!] Записать файл и перейти к редактированию следующего.
:wn :wn[ext][!] {файл} Записать в {файл} и перейти к редактированию следующего, если {файл} не существует. Добавление ! переписывает существующий файл.
:wN :wN[ext][!] [файл] Записать файл и перейти к редактированию предыдущего файла.
  в текущем окне в новом окне  
:argument :argu[ment] N :sar[gument] N Редактировать файл N
:next :n[ext] :sn[ext] Редактировать следующий файл
:next_f :n[ext] {список-арг} :sn[ext] {список-арг} определить новый список аргументов и редактировать первый файл
:Next :N[ext] :sN[ext] Редактировать предыдущий файл
:first :fir[st] :sfir[st] Редактировать первый файл
:last :la[st] :sla[st] Редактировать последний файл
Запись и выход из программы
:w :[диапазон]w[rite][!] Запись в текущий файл.
:w_f :[диапазон]w[rite] {файл} Запись в {файл}, за исключением случаев, если файл уже существует.
:w_f :[диапазон]w[rite]! {файл} Запись в {файл}. Существующий файл будет переписан.
:w_a :[диапазон]w[rite][!] >> Добавить в текущий файл.
:w_a :[диапазон]w[rite][!] >> {файл} Добавить в {файл}.
:w_c :[диапазон]w[rite] !{команда} Выполнить {команду} с строками, указанными в [диапазоне] в качестве стандартного ввода.
:up :[диапазон]up[date][!] записать в текущий файл, если внесены изменения
:wall :wa[ll][!] записать все изменённые буферы
:q :q[uit] Выход из текущего буфера, если буфер не изменён. Выйти из Vim, если больше нет буферов, не являющихся буфером справки.
:q :q[uit]! Выйти из текущего буфера в любом случае, изменения будут потеряны. Выйти из Vim, если больше нет буферов, не являющихся буфером справки.
:qa :qa[ll] Выйти из Vim, если нет изменений.
:qa :qa[ll]! Выйти из Vim в любом случае, изменения будут потеряны.
:cq :cq Выйти без записи с возвращением кода ошибки.
:wq :wq[!] Записать в текущий файл и выйти.
:wq :wq[!] {файл} Записать в {файл} и выйти.
:xit :x[it][!] [файл] Как ":wq", но записывать только в том случае, если есть изменения.
ZZ ZZ То же, что и ":x".
ZQ ZQ То же, что и ":q!".
:xall :xa[ll][!] или :wqall[!] Записать все изменённые буферы и выйти
:stop :st[op][!] Прервать Vim или запустить новую оболочку. Если включена опция 'aw' и нет [!], то записать буфер.
CTRL-Z CTRL-Z То же, что и ":stop"
Запуск VIM
-vim vim [опции] начать редактирование в пустом буфере
-file vim [опции] {файл} .. начать редактирование одного или нескольких файлов
-- vim [опции] - прочитать файл со стандартного ввода
-метка vim [опции] -t {метка} редактировать файл, связанный с {меткой}
-qf vim [опции] -q [имя-файла] начать редактирование в режиме Быстрого Исправления, показать первую ошибку

    Аргументы запуска Vim:

-gui -g запустить с GUI (также возможны другие опции)
-+ +[число] поместить курсор на строке [число] (по умолчанию: последняя строка)
-+c +{команда} выполнить {команду} после загрузки файла
-+/ +/{шабл} {файл} .. поместить курсор на первом соответствии {шаблону}
-v -v Режим Vi, запустить ex в Обычном режиме
-e -e Режим Ex, запустить vim в режиме Ex
-R -R Режим чтения, предполагает -n
-m -m Запретить изменения (изменяет опцию 'write')
-b -b Бинарный режим
-l -l Режим lisp
-A -A Режим арабского (включить опцию 'arabic')
-F -F Режим "фарси" (включить 'fkmap' и 'rightleft')
-H -H Режим "иврит" (включить 'hkmap' и 'rightleft')
-V -V Выдавать информативные сообщения
-C -C Совместимы режим, включает опцию 'compatible'
-N -N Несовместимый режим, выключает опцию 'compatible'
-r -r Показать список своп-файлов
-r -r {файл} .. Восстановить прерванную сессию редактирования
-n -n Не создавать своп-файл
-o -o [число] открыть [число] окон (по умолчанию: одно для каждого файла)
-f -f GUI: не порождать новый процесс
Amiga: не перезапускать VIM для открытия окна (например для почты)
-s -s {сценарий} сначала прочитать команды из файла {сценария}
-w -w {сценарий} записывать все набранные символы в {сценарий} (добавлять)
-W -W {сценарий} записывать все набранные символы в {сценарий} (переписать)
-T -T {терминал} установить имя терминала
-d -d {устройство} Amiga: открыть {устройство} в качестве консоли
-u -u {vimrc} прочитать инициализацию из {vimrc} вместо других файлов инициализации
-U -U {gvimrc} то же, при запуске GUI
-i -i {viminfo} прочитать данные из {viminfo} вместо других файлов
--- -- конец опций, остальные аргументы являются именами файлов
--help --help показать список аргументов и выйти
--version --version показать информацию о версии и выйти
-- - Прочитать файл из стандартного ввода
Автоматические команды

Чтение регистров, отметок, истории при запуске, сохранение при выходе.

:rviminfo :rv[iminfo] [файл] прочитать данные из viminfo [файла]
:rviminfo :rv[iminfo]! [файл] то же, переписав существующие данные
:wviminfo :wv[iminfo] [файл] Добавить данные к viminfo [файл]
:wviminfo :wv[iminfo]! [файл] Записать данные в viminfo [файл]

Автоматическая настройка опций при редактировании файлов

режимная_строка vim:{аргументы}: .. Размещается в начале или в конце файла (см. опцию 'ml'), {аргументы} передаются команде ":set"

Автоматическое выполнение команд по заданным событиям.

:autocmd :au Показать все автокоманды
:autocmd :au {событие} Показать автокоманды для {события}
:autocmd :au {событие} {шаблон}  Показать все автокоманды для {события}, соответствующие {шаблону}
:autocmd :au {событие} {шаблон} {команда} Ввести новые автокоманды для {события} соответствующие {шаблону}
:autocmd :au! Удалить все автокоманды
:autocmd :au! {событие} Удалить все автокоманды для {события}
:autocmd :au! * {шаблон} Удалить все автокоманды, соответствующие {шаблону}
:autocmd :au! {событие} {шаблон} Удалить все автокоманды для {события}, соответствующие {шаблону}
:autocmd :au! {событие} {шаблон} {команда} Удалить все автокоманды для {события}, соответствующие {шаблону}, и ввести новые
Команды для работы с окнами
CTRL-W_s CTRL-W s или :split Разделить окно на две части
:split_f :split {файл} Разделить окно и редактировать {файл} в одном из окон
:vsplit :vsplit {файл} То же, но с вертикальным разделением окна
:vertical :vertical {команда} Использовать вертикальное разделение окна при выполнении {команды}
:sfind :sf[ind] {файл} Разделить окно, найти {файл} в 'path' и редактировать его.
CTRL-W_] CTRL-W ] Разделить окно и перейти к метке под курсором
CTRL-W_f CTRL-W f Разделить окно и редактировать файл, имя которого находится под курсором
CTRL-W_^ CTRL-W ^ Разделить окно и редактировать соседний файл
CTRL-W_n CTRL-W n или :new Создать новое пустое окно
CTRL-W_q CTRL-W q или :q[uit] Закончить редактирование и закрыть окно
CTRL-W_c CTRL-W c или :cl[ose] Спрятать буфер и закрыть окно
CTRL-W_o CTRL-W o или :on[ly] Сделать текущее окно единственным на экране
CTRL-W_j CTRL-W j Переместить курсор в окно внизу
CTRL-W_k CTRL-W k Переместить курсор в окно наверху
CTRL-W_CTRL-W CTRL-W CTRL-W Переместить курсор в окно внизу (или в самое верхнее окно, если курсор находится в самом нижнем)
CTRL-W_W CTRL-W W Переместить курсор в окно наверху (или в самое нижнее окно, если курсор находится в самом верхнем)
CTRL-W_t CTRL-W t Переместить курсор в самое верхнее окно
CTRL-W_b CTRL-W b Переместить курсор в самое нижнее окно
CTRL-W_p CTRL-W p Переместить курсор в предыдущее активное окно
CTRL-W_r CTRL-W r Ротация окон вниз
CTRL-W_R CTRL-W R Ротация окон вверх
CTRL-W_x CTRL-W x Поменять местами текущее окно и следующее
CTRL-W_= CTRL-W = Сделать все окна равной высоты
CTRL-W_- CTRL-W - Уменьшить высоту текущего окна
CTRL-W_+ CTRL-W + Увеличить высоту текущего окна
CTRL-W__ CTRL-W _ Установить высоту текущего окна (по умолчанию: максимально возможная)
Команды для списка буферов
:buffers :buffers или :files показать все буферы и имена файлов
:ball :ball или :sball редактировать все буферы или аргументы
:unhide :unhide или :sunhide редактировать все загруженные буферы
:badd :badd {имя-файла} добавить файл {имя-файла} к списку
:bunload :bunload[!] [N] выгрузить буфер [N] из памяти
:bdelete :bdelete[!] [N] выгрузить буфер [N] и удалить его из списка буферов
  в текущем окне в новом окне  
:buffer :[N]buffer [N] :[N]sbuffer [N] к арг/буф N
:bnext :[N]bnext [N] :[N]sbnext [N] к N-ному след. арг/буф
:bNext :[N]bNext [N] :[N]sbNext [N] к N-ному пред. арг/буф
:bprevious :[N]bprevious [N] :[N]sbprevious [N] к N-ному пред. арг/буф
:bfirst :bfirst :sbfirst к первому арг/буф
:blast :blast :sblast к последнему арг/буф
:bmodified :[N]bmod [N] :[N]sbmod [N] к N-ному изменённому буферу
Подсветка синтаксиса
:syn-on :syntax on включить подсветку синтаксиса
:syn-off :syntax off выключить подсветку синтаксиса
:syn-keyword :syntax keyword {группа} {ключевое-слово} .. добавить ключевое слово
:syn-match :syntax match {группа} {шаблон} ... добавить синтаксическое соответствие
:syn-region :syntax region {группа} {шаблон} ... добавить синтаксическую область
:syn-sync :syntax sync [ccomment | lines {N} | ...] задаёт способ синхронизации синтаксиса
:syntax :syntax [list] показать текущие элементы синтаксиса
:syn-clear :syntax clear очистить всю синтаксическую и информацию
:highlight :highlight clear очистить всю информацию о подсветке
:highlight :highlight {группа} {ключ}={арг} .. установить подсветку для {группы}
:filetype :filetype on включить определение типа файла, без подсветки синтаксиса
:filetype :filetype plugin indent on включить определение типа файла,  с автоматическим определением отступов и другими установками
Команды GUI
:gui :gui UNIX: запустить с GUI
:gui :gui {файл} .. то же, перейти к редактированию {файла} ..
:menu :menu показать все меню
:menu :menu {путь-к-меню} показать все меню, начинающиеся с {путь-к-меню}
:menu :menu {путь-к-меню} {rhs} добавить меню {путь-к-меню}, с выражением {rhs}
:menu :menu {pri} {путь-к-меню} {rhs} то же, с приоритетами {pri}
:menu :menu ToolBar.{name} {rhs} добавить элемент панели инструментов, с выражением {rhs}
:tmenu :tmenu {путь-к-меню} {текст} добавить подсказку к меню {путь-к-меню}
:unmenu :unmenu {путь-к-меню} удалить меню {путь-к-меню}
Складки
'foldmethod' set foldmethod=manual складки вручную
  set foldmethod=indent складки по отступу
  set foldmethod=expr складки по 'foldexpr'
  set foldmethod=syntax складки по синтаксическим областям
  set foldmethod=marker складки по 'foldmarkers'
zf zf{перемещение} оператор: Определить складку вручную
:fold :{диапазон}fold определить складку для {диапазона} строк
zd zd удалить одну складку под курсором
zD zD удалить все складки под курсором
zo zo открыть одну складку под курсором
zO zO открыть все складки под курсором
zc zc закрыть одну складку под курсором
zC zC закрыть все складки под курсором
zm zm сложить ещё: уменьшить 'foldlevel'
zM zM сложить все складки: сделать 'foldlevel' равным нулю
zr zr меньше складок: увеличить 'foldlevel'
zR zR открыть все складки: сделать 'foldlevel' максимальным.
zn zn ничего не складывать: выключить 'foldenable'
zN zN складывать: включить 'foldenable'
zi zi переключать 'foldenable'