| Комбинация | Действие |
|---|---|
| Esc | Выйти в нормальный режим |
| i | Вставка перед курсором |
| I | Вставка в начале строки |
| a | Вставка после курсора |
| A | Вставка в конце строки |
| o | Новая строка ниже, режим вставки |
| O | Новая строка выше, режим вставки |
| v | Визуальный (посимвольный) |
| V | Визуальный построчный |
| Ctrl+v | Визуальный блочный |
| R | Режим замены (replace) |
| :q | Выйти (если нет несохранённых) |
| :q! | Выйти без сохранения |
| :w | Сохранить |
| :wq / ZZ | Сохранить и выйти |
| ZQ | Выйти без сохранения |
| Комбинация | Действие |
|---|---|
| h j k l | Влево/вниз/вверх/вправо |
| 0 / ^ | В начало строки / к первому непробельному |
| $ | В конец строки |
| gg / G | В начало/конец файла |
| { / } | Абзац назад/вперёд |
| H / M / L | Верх/середина/низ экрана |
| Ctrl+u / Ctrl+d | Полэкрана вверх/вниз |
| Ctrl+b / Ctrl+f | Экран вверх/вниз |
| zb / zz / zt | Прокрутить строку вниз/центр/вверх экрана |
| Комбинация | Действие |
|---|---|
| w / b / e | Начало след. слова / назад / конец слова |
| W / B / E | По “большим” словам (по пробелам) |
| ge / gE | К концу предыдущего слова (мал./больш.) |
| f{char} / F{char} | К символу вправо/влево в строке |
| t{char} / T{char} | До символа (не включая) вправо/влево |
| ; / , | Повторить последний f/t (вперёд/назад) |
| % | Перейти к парной скобке () {} [] |
| gd / gD | К определению локальному/глобальному (идентификатор) |
| [{ / ]} | К началу/концу блока по скобкам |
| Комбинация | Действие |
|---|---|
| /текст | Поиск вперёд |
| ?текст | Поиск назад |
| n / N | Следующее/предыдущее совпадение |
| * / # | Поиск слова под курсором вперёд/назад |
| :%s/old/new/g | Замена во всём файле |
| :%s/old/new/gc | Замена с подтверждением |
| :s/old/new/g | Замена в текущей строке |
| :vimgrep /rg | Глобальный поиск (зависит от плагинов/grepprg) |
| :copen / :cnext / :cprev | Quickfix-список: открыть/след./пред. |
| Комбинация | Действие |
|---|---|
| x / X | Удалить символ под курсором / слева |
| r{char} | Заменить символ |
| ~ | Инверсия регистра символа |
| u / Ctrl+r | Отмена / Повтор отмены |
| . | Повтор последнего изменения |
| J | Склеить строку ниже |
| = /==/gg=G | Авто-выравнивание: выделение/строка/весь файл |
| >> / << | Сдвиг вправо/влево (indent) |
| gi | Вернуться к последней позиции вставки |
| ga | Код символа под курсором |
Операторы (комбинируются с объектами и перемещениями):
| Оператор | Значение |
|---|---|
| d | Удалить (cut) |
| c | Изменить (delete + вставка) |
| y | Скопировать (yank) |
| > / < | Сдвиг вправо/влево |
| g~ / gu / gU | Инверт./нижний/ВЕРХНИЙ регистр |
| = | Форматирование |
Примеры комбинаций:
| Пример | Действие |
|---|---|
| dw | Удалить до конца слова |
| d$ / D | Удалить до конца строки |
| d0 | Удалить до начала строки |
| ciw / diw | Изменить/удалить внутр. слово |
| ci" / di( | Изменить внутри кавычек/скобок |
| yy / 2yy | Скопировать строку / 2 строки |
| p / P | Вставить после/до курсора |
| yip / dip / cip | Операции над внутренним абзацем |
| Объект | Внутри (i...) | Вокруг (a...) |
|---|---|---|
| Слово | iw | aw |
| Скобки () | i) или ib | a) или ab |
| Квадр. скобки [] | i] | a] |
| Фигурные {} | i} | a} |
| Кавычки ' " ` | i' i" i` | a' a" a` |
| Абзац | ip | ap |
| Тег HTML | it | at |
| Комбинация | Действие |
|---|---|
| v / V / Ctrl+v | Выделение: симв./строки/блок |
| o | Поменять активную границу выделения |
| aw/iw и т.д. | Выбирать текстовые объекты |
| > / < | Сдвиг блока |
| = | Форматировать выделение |
| y / d / c | Копировать/удалить/изменить выделение |
| :'<,'>s/.../.../g | Замена в выделении |
| gU / gu | В ВЕРХНИЙ / в нижний регистр |
| Комбинация | Действие |
|---|---|
| p / P | Вставить после/до курсора |
| "xp | Вставить из регистра x |
| "+y / "+p | Копировать/вставить в системный буфер (Windows) |
| "*y / "*p | Буфер выделения (X11; в Windows обычно как "+) |
| :set paste / :set nopaste | Режим вставки без авт. отступов |
Регистры:
| Регистры | Описание |
|---|---|
| "0 | Последнее yank |
| "1–"9 | История удалений |
| "" | Неявный (по умолчанию) |
| "_ | Чёрная дыра (удалить без буфера) |
| "+ | Системный буфер обмена |
| "a–"z | Именованные |
| Комбинация | Действие |
|---|---|
| == | Выравнять текущую строку |
| =% | Выравнять по парной скобке |
| gg=G | Выравнять весь файл |
| >> / << | Сдвиг строки вправо/влево |
| :set expandtab | Пробелы вместо табов |
| :set tabstop=4 | Ширина таба при отображении |
| :set shiftwidth=4 | Шаг автоотступа |
| :retab | Перекодировать табы/пробелы |
Буферы:
| Комбинация | Действие |
|---|---|
| :ls / :buffers | Список буферов |
| :bN / :bn / :bp | Перейти к буферу N / след. / пред. |
| :bd | Закрыть буфер |
| :b# | Переключиться на пред. буфер |
Окна (splits):
| Комбинация | Действие |
|---|---|
| :sp / :vsp | Гориз./вертик. сплит |
| Ctrl+w s / v | То же сплит из нормального режима |
| Ctrl+w w | Перейти к следующему окну |
| Ctrl+w h/j/k/l | Перейти влево/вниз/вверх/вправо |
| Ctrl+w c / q | Закрыть текущее окно |
| Ctrl+w = | Выравнять размеры |
| Ctrl+w + / - | Увеличить/уменьшить высоту |
| Ctrl+w > / < | Изменить ширину |
Вкладки (tabs):
| Комбинация | Действие |
|---|---|
| :tabnew | Новая вкладка |
| gt / gT | След./пред. вкладка |
| :tabclose | Закрыть вкладку |
| :tabs | Список вкладок |
| Комбинация | Действие |
|---|---|
| m{a-z} | Поставить метку в файле |
| '{a-z} / `{a-z} | Перейти к началу строки / точной позиции |
| '' / `` | Вернуться к последней позиции |
| '. | К последнему изменению |
| :marks | Список меток |
| Комбинация | Действие |
|---|---|
| q{reg} ... q | Записать макрос в регистр |
| @{reg} | Выполнить макрос |
| @@ | Повторить последний макрос |
| :reg | Показать содержимое регистров |
| . | Повторить последнее изменение |
| :normal {cmds} | Выполнить команды нормального режима по строкам/диапазону |
| Комбинация | Действие |
|---|---|
| :e {file} | Открыть файл |
| :w {file} | Сохранить как |
| :Explore / :Ex | Файловый менеджер (netrw) |
| gf | Открыть файл по пути под курсором |
| Ctrl+^ | Переключиться между двумя файлами |
| :cd / :lcd | Сменить (локальную) директорию |
| Комбинация | Действие |
|---|---|
| % | Перейти к парной скобке |
| [{ / ]} | К началу/концу блока |
| [m / ]m | К началу/концу метода (в некоторых ftplugins) |
| Комбинация | Действие |
|---|---|
| : | Ввести Ex-команду |
| q: | Открыть окно истории команд |
| / и ? | История поиска через стрелки вверх/вниз |
| Ctrl+r " | Вставить из регистра в командную строку |
| Комбинация | Действие |
|---|---|
| Ctrl+a | Увеличить число под курсором |
| Ctrl+x | Уменьшить число под курсором |
| 10Ctrl+a | Увеличить на 10 и т.п. |
| Комбинация | Действие |
|---|---|
| za | Переключить свёртку под курсором |
| zc / zo | Свернуть / развернуть |
| zM / zR | Свернуть всё / развернуть всё |
| zm / zr | Увеличить/уменьшить уровень |
| :set foldmethod=indent/syntax/marker | Режим свёртки |
| Комбинация | Действие |
|---|---|
| ciw | Изменить слово (часто используемо) |
| daw | Удалить слово с пробелом |
| dip / cip | Удалить/изменить абзац |
| g~iw / guiw / gUiw | Тоггл/нижний/верхний регистр слова |
| yiw; p | Дублировать слово |
| viw | Выделить слово |
| vit / cit | Содержимое тега HTML |
| Команда | Действие |
|---|---|
| :set number relativenumber | Номера строк и относительные |
| :set clipboard=unnamedplus | Использовать системный буфер по умолчанию |
| :set mouse=a | Включить мышь |
| :set encoding=utf-8 | Кодировка UTF-8 |
| :set nowrap | Отключить перенос строк |
| :set ignorecase smartcase | Регистронезависимый поиск с умным режимом |
| :set hlsearch incsearch | Подсветка и инкрементальный поиск |
Подсказки:
- Любое действие можно умножать числом: 5j, 3dw, 10>>.
- Операторы + объекты дают мощные комбинации: ci" меняет содержимое кавычек; da) удалит скобки и содержимое.
- Используйте точку для повторения последнего изменения, это сильнейший ускоритель.
- В Windows для системного буфера чаще всего используйте "+y и "+p; настройка clipboard=unnamedplus делает это по умолчанию.