Общее
- :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] - выключить режим сравнения для текущего окна