Приветствую.
Осваиваю vim, проштудировал справку, образовалась таблица с командами/сочетаниями клавиш. С высокой долей вероятности - они самые ходовые. Сделаю бумажную версию, буду пытаться прирости. Оставляю здесь, надеюсь, будет полезно.
#----------------- Перемещение ------------------------------------------------
* h j k l
* 0 ^
* $
* gM Середина строки.
* [N]| Переход к столбцу с номером N, 1 по умолчанию.
* [N]f{char} [N]F{char} К N'му символу char справа/слева.
* [N]t{char} [N]T{char} До символа.
* [N]; [N], Повтор f F t T в прямом/обратном напр-ии.
* g0 g^ g$ gm gk gj Оперируют с экранными линиями.
* gg [line num]G
* {N}% На строку, являющуюся N % файла.
* w e b ge
W E B gE Границы слов - только пробелы.
* [N][* [N]]* К /* или к */.
* gd gD К локальному/глобальному объявлению.
* {N}go К N байту буфера.
* CTRL-{U|Y|B} Прокрутка назад на половину/строку/экран.
* CTRL-{D|E|F} Прокрутка вперёд на половину/строку/экран.
* zz zt zb Сдвиг окна так, что курсор в центре/в верху/в низу.
* [# ]# % Перемещение по препроцессорным директивам.
* [[ ][ К внешней {/};
[{ ]} К текущей {/};
[m ]m К предыдущей/следующей старту функции-члену;
[] ]] Переход между функциями.
* [( ]) К текущей (/).
* [/ ]/ К /* / */.
#----------------- Модификация, копирование -----------------------------------
* i I Добавление перед курсором/в начало строки.
* a A Добавление за курсором/в начале строки.
* x X Удалить под курсором/слева.
* i_CTRL-A i_CTRL-@ Вставить текст введённый в предыдущем insert режиме/
с выходом из insert режима.
* i_CTRL-Y i_CTRL-E Скопировать символ со строки выше/ниже.
* ["x]d{pos} dd [N]D Удалить до pos/всю строку/до конца строки;
Регистр X - добавить в x.
* i_CTRL-R[_CTRL-R]{reg} Вставка из регистра; [не вып-ть команды, <BS> и т.п.].
* ["x]y[pos] yy Копирование объекта/всей строки.
* ["x]p P Вставка после/перед курсором.
* o O Вставка пустой строки выше/ниже курсора.
* J gJ Удалить \n. В vis режиме - у всех выд-ых строк;
gJ - без пробелов.
* r gr R gR Замена одного/нескольких символов, с g - виртуальная;
В виз-ом ре-ме заменит блок символом.
* c{pos} cc C s Замена объекта/строки/до конца строки/одного сивола.
* ~ v_{~|u|U} Изменение регистра;
{g~|gu|gU}{pos} Всю строку - g~~, guu, ...
* i_CTRL-V{int|kstroke} Вставить символ литерально.
* [N]CTRL-A [N]CTRL-X Увеличить/уменьшить число под курсором на N.
#----------------- Поиск, поиск с заменой -------------------------------------
* % Поиск парных скобок.
* # * Поиск слова под курсором назад/вперёд.
g# g* Находить и частичные совпадения.
* /txt[\c] ?txt[\c] Поиск верёд/назад; n N продолжить вперёд/назад;
CTRL-I CTRL-O переходы вперёд/назад; \c иг-ть рег-тр.
* [range][%]s/было/стало/[g|c|e] % - во всём файле; g не только первое;
с - с запросом; e - отсут-ие совпад-ий не
ошибка.
* :[range]g/{ptrn}/{cmd} Выполнить cmd на строках, подходящих под ptrn.
* :grep x *.cc
:cnext :cprev :clist
* :set ic hls is Нечувствительность к регистру/подсветка/инкр-ый поиск;
:wrapscan Для отключения префикс no (noic, ...).
* gf :find nm :sfind Найти и открыть файл под курсором/nm в текущей
CTRL-W f директории и в path директориях.
:set path+=
#----------------- Метки ------------------------------------------------------
* CTRL-{O|I} Перемещение по меткам.
* `` Переход на последюю, тек-ая позиция - последняя метка.
* :jumps :clearjumps
* m{a-z} {`|'}{a-z} Именованные метки; Создать/перейти/список;
:marks [abc] a-z локальные, A-Z глобальные.
* `" `. Поз-ия при выходе из файла/модификация перед выходом.
#----------------- Кодинг, фолдинг, отступы -----------------------------------
* zf zo zc Фолдинг, создать/развернуть/свернуть;
zr zm Уровень свёрнутости меньше/больше;
zR zM Развернуть/свернуть всё;
zn zN zt Убарать фолдинг/вернуть/переключение между ними;
zO zC Развернуть/свенруть всё под курсором;
zd zD Удалить фол-г под курсором/весь;
:set foldmethod=syntax
:set foldopen=all Автофолдинг.
foldclose=all
* CTRL-X_CTRL-O omni completion, CTRL-{P|N} для перемещения.
* set makeprg Задать команду, выполняемую при :make;
:c{next|previous|
first|last}
:cc[n] :clist[!] Описание ошибок/список ошибок;
:colder :cnewer К старому/к новому списку ошибок;
:compiler Выбрать формат ошибок (set errorformat).
* set shiftwidth=4
set softtabstop=4
= Форм-вать текст (отступы); ==, v_=, gg=G весь файл;
CTRL-T CTRL-D Добавить/удалить один shiftwidth в строке;
> < << >> Добавить/удалить отступ в норм-ом или виз-ом реж-ме;
:set cinoptions Настройка отступов.
#----------------- Файлы ------------------------------------------------------
* :w Сохранение части файла в виз-ом режиме/всего в об-ом.
* :e! Переоткрыть файл.
* ZZ Выход с сохранением или из справ-го окна.
* [range]r{file | !cmd} Вставка файла/вывода cmd.
* :w :wa :w>>name
:saveas :file :edit
:hide edit
:args [other*.txt]
:[N]next :prev :last
:first
* CTRL-^ Переход между последними файлами;
CTRL-w CTRL-^ Переход с разделением окна.
* $ view file Открыть read-only.
* :oldfiles :e #<2 История файлов/ссылка на второй.
* :buffers :ls
:[s]buffer 3
:bnext :bprevious
:bdelete 3
#----------------- Окна, вкладки ----------------------------------------------
* :close :only :[v]new
* :[sz][v]split {name}
:[vertical]all
* [sz]CTRL-W _ Изменить размер окна.
CTRL-W +
CTRL-W -
* CTRL-W {H|J|K}L} Переход между окнами.
CTRL-W w
* tab split [file]
tabedit {file}
* gt :tabonly Переход по вкладкам/закрыть кроме текущей.
#----------------- vimdiff ----------------------------------------------------
* zo zc Фолдинг в vimdiff.
* [vertical] diffsplit
* ]c [c Переход по изменениям.
* dp do Прменить изменение в/из другой/го файла.
* :diffupdate Обновить подсветку.
#----------------- Командная строка -------------------------------------------
* <S-Right> <S-Left> Перемещение
CTRL-B CTRL-E
* CTRL-W CTRL-U CTRL-C Удалить слово/всю строку/выйти.
* <Tab> CTRL-{P|N} ctrl комбинации после Tab;
CTRL-D Список совпадений;
CTRL-L Дополнить слово длиннейшим однозначным вар-то.
* history [/]
<Up> <Down>
CTRL-{P|N} В отличие от up down, не учитывает префикс.
* :q Command line window.
* gQ Ex mode, похож на cmd mode, но многокомандный.
* :!{cmd} Выполнить внешнюю команду.
* :shell
#----------------- Отмена изменений -------------------------------------------
* u U Отмена посл-го/всех изм-ий в пос-ей редакт-мой строке;
CTRL-R Отмена отмены; Проходят по активной ветке.
* g- g+ К более ранней/поздней версии текста, активность ветки
неважна.
* :undolist Показать листья в дереве изменений.
* :undo 2 Перейти на ветку с номером 2.
* :earlier 1f Переход к версиям файла, которые были на момент
:later 1f сохранения; Необязательно на 1 шаг.
* :earlier 10{s|m|h|d} Переход к версии файла в указанный момент.
* :later 1m
#----------------- Разное -----------------------------------------------------
* q{reg} ... q Записать макрос в reg (REG - добавить);
@reg @@ Выполнить макрос/повторить.
* . Повторить последюю редактирующую команду.
* :{range}!cmd Выполнить внешнюю команду над диапазоном.
!{motion}cmd
* {vis block} {A|I|c|C| + выделение строк блока через $.
~|u|U|r|<|>}
* text-objects На месте {pos} и виз-ом реж-ме. :h text-objects.
* !{motion}{program} Пропустить блок через внешнюю команду.
* v V CTRL-V Визуальный режим/визуальная строка/виз-ый блок;
v_o v_O Смена угла;
gv Перевыделить.
* CTRL-G Инфа о местоположении.
g CTRL-G
* gq Форматировать текст (ширина строк, set textwidt).
* i_CTRL-{U|W} Удалить слово слева/всё слева кроме отступа.
* i_CTRL-O insert normal mode.
* CTRL-H Backspace.
* CTRL-I Tab.
* CTRL-[ Esc.
* "* "+ Primary selection/clipboard.
* :options
* :set {option}& Вернуть значение по умолчанию.
* :set [no]number Номера строк.
* :set [no]ruler
* :set textwidth
* :set viminfo
:wviminfo! fnm Перекинуть инфу между разными
:rviminfo! fnm vim экземплярами.
* :set sessionoptions
:mksession f.vim Сохранить/
:source f.vim загрузить сессию.
* :mkview :loadview Как сессия, но для одного окна.
* Modelines Установка опций для файла (спец строка в файле).
* :edit . Открыть netrw file browser.
* :pwd :cd :cd -
:lcd :tcd Локальная директория окна/вкладки.
* vim -b datafile Hex редактор; -b запрещает потенциальные
:%!xxd :%!xxd -r автокорректировки.
* :{i|c}abbrev Создание аббревиатур.
:abbreviate
* :argdo :windo :bufdo Выполнить cmd на всех файлах-аргумента/окнах/буферах.
#----------------- Справка ----------------------------------------------------
* K Найти man для слова под курсором.
* :helgrep Поиск по справке.
:cnext :copen
* :help langmap
* :help ft-<filetype>-<functionality> Пример: help ft-c-syntax.