Общее
- :h[elp] keyword - открыть справку для ключевого слова keyword
- :sav[eas] file - сохранить под названием file
- :clo[se] - закрыть текущую панель
- :ter[minal] - открыть окно терминала
- K - открыть справочное руководство для слова под курсором
Перемещение курсора
- h - передвинуть курсор влево
- j - передвинуть курсор вниз
- k - передвинуть курсор вверх
- l - передвинуть курсор вправо
- gj - переместить курсор вниз (многострочный текст)
- gk - переместить курсор вверх (многострочный текст)
- H - переместиться к началу экрана
- M - переместиться к середине экрана
- L - переместиться к концу экрана
- w - переместиться вперед на начало слова
- W - переместиться вперед на начало слова (слово может содержать пунктуацию)
- e - переместиться вперед на конец слова
- E - переместиться вперед на конец слова (слово может содержать пунктуацию)
- b - переместиться назад на начало слова
- B - переместиться назад на начало слова (слово может содержать пунктуацию)
- ge - переместиться назад на конец слова
- gE - переместиться назад на конец слова (слово может содержать пунктуацию)
-
% - перейти к соответствующему парному символу (по умолчанию поддерживаемые пары: '()', '{}', '[]' - используйте
:h matchpairs
в Vim для получения дополнительной информации) - 0 - переместиться на начало строки
- ^ - переместиться на первый непробельный символ строки
- $ - переместиться на конец строки
- g_ - переместиться к последнему непустому символу в строке
- gg - переместиться на первую строку документа
- G - переместиться на последнюю строку документа
- 5gg or 5G - переместить на пятую строку
- gd - переместиться к локальному объявлению
- gD - переместиться к глобальному объявлению
- fx - переместиться к следующему вхождению символа x
- tx - переместиться перед следующим вхождением символа x
- Fx - переместиться к предыдущему вхождению символа x
- Tx - переместиться перед предыдущим вхождением символа x
- ; - повторить предыдущее перемещение f, t, F или T
- , - повторить предыдущее перемещение f, t, F или T в обратном порядке
- } - переместиться к следующему параграфу (или функции/блоку при редактировании кода)
- { - переместиться к предыдущему параграфу (или функции/блоку при редактировании кода)
- zz - централизовать курсор на экране
- zt - position cursor on top of the screen
- zb - position cursor on bottom of the screen
- Ctrl + e - переместить экран на одну строку вниз (без перемещения курсора)
- Ctrl + y - переместить экран на одну строку вверх (без перемещения курсора)
- Ctrl + b - переместиться назад на целый экран
- Ctrl + f - переместиться вперед на целый экран
- Ctrl + d - переместиться вперед на половину экрана
- Ctrl + u - переместиться назад на половину экрана
Режим вставки - вставка/добавление текста
- i - вставка перед курсором
- I - вставка в начало строки
- a - вставка (добавление) после курсора
- A - вставка (добавление) в конец строки
- o - добавление новой строки под текущей
- O - добавление новой строки над текущей
- ea - вставка (добавление) после конца слова
- Ctrl + h - удалить символ перед курсором в режиме вставки
- Ctrl + w - удалить слово перед курсором в режиме вставки
- Ctrl + j - перейти на новую строку в режиме вставки
- Ctrl + t - добавить один отступ строке (переместить вправо) в режиме вставки
- Ctrl + d - убрать один отступ у строки (переместить влево) в режиме вставки
- Ctrl + n - вставить (автозаполнить) следующее соответствие перед курсором в режиме вставки
- Ctrl + p - вставить (автозаполнить) предыдущее соответствие перед курсором в режиме вставки
- Ctrl + rx - вставить содержимое регистра x
- Ctrl + ox - временно включить нормальный режим и выполнить команду нормального режима x.
- Esc or Ctrl + c - выход из режима вставки
Редактирование
- r - заменить один символ
- R - заменить несколько символов, до нажатия ESC.
- J - присоединить нижнюю строку к текущей
- gJ - присоединить нижнюю строку к текущей без пробела между ними
- gwip - перекомпоновать азбац
- g~ - инвертировать регистр в ходе перемещения курсора
- gu - перевести в верхний регистр в ходе перемещения курсора
- gU - перевести в нижний регистр в ходе перемещения курсора
- cc - заменить всю строку
- c$ or C - заменить до конца строки
- ciw - изменить (заменить) всё слово
- cw or ce - заменить до конца слова
- s - удалить символ и заменить текст
- S - удалить строку и заменить текст (то же, что cc)
- xp - переставить две буквы (удалить и вставить)
- u - отменить
- U - восстановить (откатить) последнюю изменённую строку
- Ctrl + r - повторить
- . - повторить последнюю команду
Выделение текста (визуальный режим)
- v - включить режим выделения текста, выделить строки, затем выполнить команду (например, y-копирование)
- V - включить построчный режим выделения
- o - переместиться на другой конец выделенной области
- Ctrl + v - включить режим выделения блоков
- O - переместить на другой угол блока
- aw - выделить слово
- ab - блок в ()
- aB - блок в {}
- at - блок в <> тегах
- ib - внутренний блок в ()
- iB - внутренний блок в {}
- it - внутренний блок в <> тегах
- Esc or Ctrl + c - выйти из режима выделения текста
Визуальные команды
- > - сместить текст вправо
- < - сместить текст влево
- y - скопировать выделенный текст
- d - удалить выделенный текст
- ~ - переключить регистр
- u - перевести выделенный текст в нижний регистр
- U - перевести выделенный текст в верхний регистр
Регистры
- :reg[isters] - показать содержимое регистров
- "xy - поместить содержимое в регистр x
- "xp - вставить содержимое регистра x
- "+y - скопировать в системный регистр буфера обмена
- "+p - вставить из системного регистра буфера обмена
0 - последнее копирование
" - безымянный регистр: последнее удаление или копирование
% - название текущего файла
# - название альтернативного файла
* - содержимое буфера обмена (первичный X11)
+ - содержимое буфера обмена (буфер обмена X11)
/ - последний поисковый паттерн
: - последняя команда
. - последний вставленный текст
- - последнее небольшое (меньшее, чем строка) удаление
= - регистр, возвращающий значение выражения
_ - регистр чёрной дыры
Метки
- :marks - список меток
- ma - установить метку A на текущей позиции
- `a - переместиться к метке A
- y`a - скопировать до метки A
- `0 - переместиться на позицию, на которой Vim в последний раз был закрыт
- `" - переместиться на позицию, на которой был закрыт в последний раз данный файл
- `. - переместиться на позицию последнего изменения данного файла
- `` - переместиться на позицию перед последним переходом
- :ju[mps] - открыть список переходов
- Ctrl + i - перейти к более новому переходу в списке переходов
- Ctrl + o - перейти к более старому переходу в списке переходов
- :changes - открыть список изменений
- g, - перейти к более новому изменению в списке изменений
- g; - перейти к более старому изменению в списке изменений
- Ctrl + ] - перейти к тегу под курсором
Макросы
- qa - записать макрос A
- q - остановить запись макроса
- @a - выполнить макрос A
- @@ - выполнить последний макрос
Вырезать и вставить
- yy - скопировать строку
- 2yy - скопировать 2 строки
- yw - скопировать слово
- yiw - скопировать слово под курсором
- yaw - скопировать слово под курсором и пространство перед или после него
- y$ or Y - скопировать до конца строки
- p - вставить буфер обмена после курсора
- P - вставить буфер обмена перед курсором
- gp - вставить буфер обмена после курсора и переместить курсор после вставленного текста
- gP - вставить буфер обмена перед курсором и переместить курсор после вставленного текста
- dd - удалить (вырезать) строку
- 2dd - удалить (вырезать) 2 строки
- dw - удалить (вырезать) слово
- diw - удалить (вырезать) слово под курсором
- daw - удалить (вырезать) слово под курсором и пространство перед или после него
- :3,5d - delete lines starting from 3 to 5
e.g.
:.,$d - From the current line to the end of the file
:.,1d - From the current line to the beginning of the file
:10,1d - From the 10th line to the beginning of the file
- :g/{pattern}/d - delete all lines containing pattern
- :g!/{pattern}/d - delete all lines not containing pattern
- d$ or D - удалить (вырезать) до конца строки
- x - удалить (вырезать) символ
Отступы текста
- >> - добавить один отступ строке (переместить вправо)
- << - убрать один отступ у строки (переместить влево)
- >% - добавить один отступ блоку в () или {}
- <% - de-indent a block with () or {} (cursor on brace)
- >ib - изменить отступ внутреннему блоку в ()
- >at - изменить отступ блоку в <> тегах
- 3== - выровнить отступы 3-х строк
- =% - выровнить отступы блока в () или {}
- =iB - выровнить отступы блока в {}
- gg=G - выровнить оступы всего буфера
- ]p - вставить и выровнить отступы по строке под курсором
Выход и сохранение
- :w - сохранить файл, но не выходить
- :w !sudo tee % - сохранить файл с sudo
- :wq or :x or ZZ - сохранить файл и выйти
- :q - выйти (терпит неудачу в случае несохраненных изменений)
- :q! or ZQ - выйти без сохранения
- :wqa - записать (сохранить) и выйти во всех вкладках и буферах
Поиск и замена
- /pattern - поиск шаблона
- ?pattern - обратный поиск шаблона
- \vpattern - 'very magic' режим: все не алфавитно-цифровые символы интерпретируются как специальные (экранирование не требуется)
- n - повторить поиск в том же направлении
- N - повторить поиск в обратном направлении
- :%s/old/new/g - заменить все вхождения шаблона в файл на указанное значение
- :%s/old/new/gc - заменить все вхождения шаблона в файл на указанное значение с подтверждением
- :noh[lsearch] - отключить подсвечивание результатов поиска
Поиск в нескольких файлах
- :vim[grep] /pattern/ {`{file}`} - поиск по шаблону в нескольких файлах
- :cn[ext] - переместиться к следующему совпадению
- :cp[revious] - переместиться к предыдущему совпадению
- :cope[n] - открыть окно со списком результатов
- :ccl[ose] - закрыть окно со списком результатов
Вкладки
- :tabnew or :tabnew {page.words.file} - открыть файл в новой вкладке
- Ctrl + wT - переместить текущее окно в собственную вкладку
- gt or :tabn[ext] - переключиться на следующую вкладку
- gT or :tabp[revious] - переключиться на предыдущую вкладку
- #gt - переключиться на вкладку с номером #
- :tabm[ove] # - переместить текущую вкладку на # позицию (нумерация с 0)
- :tabc[lose] - закрыть текущую вкладку и все её окна
- :tabo[nly] - закрыть все вкладки, кроме текущей
-
:tabdo command - выполнить
command
на всех вкладках (к примеру,:tabdo q
закрывает все открытые вкладки)
Работа с несколькими файлами
- :e[dit] file - редактировать файл в новом буфере
- :bn[ext] - перейти к следующему буферу
- :bp[revious] - перейти к предыдущему буферу
- :bd[elete] - удалить буфер (закрыть файл)
- :b[uffer]# - перейти к буферу по номеру #
- :b[uffer] file - перейти к буферу по имени файла
- :ls or :buffers - список всех открытых буферов
- :sp[lit] file - открыть файл в новом буфере и разделить окно
- :vs[plit] file - открыть файл в новом буфере и вертикально разделить окно
- :vert[ical] ba[ll] - развернуть все буферы как вертикальные окна
- :tab ba[ll] - развернуть все буферы как вкладки
- Ctrl + ws - разделить окно
- Ctrl + wv - разделить окно вертикально
- Ctrl + ww - переключение окон
- Ctrl + wq - закрыть окно
- Ctrl + wx - поменять местами текущее окно со следующим
- Ctrl + w= - сделать все окна одинаковой высоты и ширины
- Ctrl + wh - переместить курсор в левое окно (вертикально разделение)
- Ctrl + wl - переместить курсор в правое окно (вертикальное разделение)
- Ctrl + wj - переместить курсор в окно ниже (горизонтальное разделение)
- Ctrl + wk - переместить курсор в окно выше (горизонтальное разделение)
- Ctrl + wH - сделать текущее окно максимальным по высоте и крайним слева (самым левым вертикальным окном)
- Ctrl + wL - сделать текущее окно максимальным по высоте и крайним справа (самым правым вертикальным окном)
- Ctrl + wJ - сделать текущее окно максимальным по ширине и крайним снизу (самым нижним горизонтальным окном)
- Ctrl + wK - сделать текущее окно максимальным по ширине и крайним сверху (самым верхним горизонтальным окном)
Различия файлов
- zf - вручную определить свёртку в ходе перемещения курсора
- zd - удалить свёртку под курсором
- za - переключить состояние свёртки под курсором
- zo - раскрыть свёртку под курсором
- zc - свернуть свёртку под курсором
- zr - раскрыть все свёртки на один уровень
- zm - свернуть все свёртки на один уровень
- zi - переключить состояния всех свёрток в буфере
- ]c - перейти к началу следующего отличия
- [c - перейти к началу предыдущего отличия
- do or :diffg[et] - скопировать отличия (из другого буфера)
- dp or :diffpu[t] - вставить отличия (в другой буфер)
- :diffthis - сделать текущее окно частью окна сравнения
- :dif[fupdate] - обновить отличия
- :diffo[ff] - выключить режим сравнения для текущего окна