На главную

Справочники

Шпаргалка Vim

Режимы, движения, текстовые объекты, регистры и макросы — плюс разбор набранной комбинации по частям.

Разбор по частям

Что делает эта комбинация

Vim читает нажатия как язык: [регистр][число]оператор[число]движение.

dоператорудалить2счётчик2 разаwдвижениеслово вперёд

Удалить слово вперёд, 2 раза.

удаляет область в буфер

Показано 79 из 79 строк.

Режимы

Esc возвращает в обычный режим из любого. Если непонятно, что происходит, — Esc дважды.

  • i / a

    Вставка перед курсором / после курсора.

  • I / A

    Вставка в начало строки / в конец строки.

  • o / O

    Новая строка ниже / выше и вставка.

  • v / V / Ctrl-v

    Выделение: посимвольное, построчное, блоком.

  • R

    Замена: набор затирает символы вместо вставки.

  • gi

    Вернуться туда, где в последний раз выходили из вставки.

  • : / /

    Командная строка / поиск.

  • Ctrl-o

    Одна команда обычного режима, не выходя из вставки.

Движения

Любое движение — это и способ переместиться, и аргумент для оператора: d} удаляет ровно то, что прошёл бы }.

  • h j k l

    Влево, вниз, вверх, вправо.

  • w / W

    В начало следующего слова; W считает словом всё до пробела.

  • e / ge

    В конец слова вперёд / назад.

  • b / B

    В начало предыдущего слова.

  • 0 / ^ / $

    В начало строки / к первому непробельному / в конец строки.

  • f{символ} / F{символ}

    К следующему такому символу в строке вперёд / назад.

  • t{символ} / T{символ}

    Вплотную до символа, не наступая на него.

  • ; / ,

    Повторить последний поиск по символу вперёд / назад.

  • { / }

    На абзац назад / вперёд.

  • gg / G / 42G

    В начало файла / в конец / на строку 42.

  • %

    К парной скобке.

  • H / M / L

    К верхней, средней, нижней строке экрана.

  • Ctrl-d / Ctrl-u

    Полэкрана вниз / вверх.

  • '' / `.

    Назад туда, откуда прыгнули / к месту последней правки.

Операторы и правка

  • d{движение}

    Удалить область: dw, d$, d}, dd — вся строка.

  • c{движение}

    Удалить и сразу перейти в режим вставки: cw, ci", cc.

  • y{движение}

    Скопировать (yank): yy — строка, y} — абзац.

  • p / P

    Вставить после курсора / до него.

  • x / X

    Удалить символ под курсором / перед ним.

  • r{символ} / ~

    Заменить один символ / переключить регистр.

  • >> / <<

    Сдвинуть строку вправо / влево; >} — целый абзац.

  • J / gJ

    Склеить со следующей строкой с пробелом / без пробела.

  • u / Ctrl-r

    Отменить / вернуть.

  • .

    Повторить последнюю правку. Самая полезная клавиша в Vim.

  • gu{движение} / gU{движение}

    Нижний / верхний регистр области; guiw — слово целиком.

  • Ctrl-a / Ctrl-x

    Увеличить / уменьшить число под курсором.

  • =G

    Переотбить отступы от курсора до конца файла.

Текстовые объекты

i — «внутри», a — «вместе с обрамлением». Работают из любого места объекта, курсор ставить в начало не нужно.

  • iw / aw

    Слово без пробелов / со следующим пробелом.

  • is / as

    Предложение.

  • ip / ap

    Абзац.

  • i" / a"

    Внутри кавычек / вместе с кавычками. Аналогично i' и i`.

  • i( / a( / ib

    Внутри круглых скобок / вместе со скобками.

  • i{ / a{ / iB

    Внутри фигурных скобок — тело функции целиком.

  • i[ / a[

    Внутри квадратных скобок.

  • it / at

    Внутри HTML-тега / вместе с тегом.

  • ci"

    Заменить содержимое строки в кавычках — самая частая связка.

  • dap

    Удалить абзац целиком.

  • yi{

    Скопировать тело блока.

Регистры и макросы

Регистр — это именованный буфер. "a перед командой означает «работать с регистром a».

  • "ayy / "ap

    Скопировать строку в регистр a и вставить из него.

  • "Ayy

    Заглавная буква регистра — дописать, а не перезаписать.

  • "+y / "+p

    Обмен с системным буфером обмена.

  • "0p

    Вставить последнее скопированное, даже если после этого что-то удаляли.

  • "_d{движение}

    Удалить в «чёрную дыру», не затирая буфер.

  • :reg

    Показать содержимое всех регистров.

  • qa … q

    Записать макрос в регистр a; вторая q останавливает запись.

  • @a / @@

    Выполнить макрос a / повторить последний.

  • 10@a

    Выполнить макрос десять раз.

  • :%normal @a

    Прогнать макрос по всем строкам файла.

  • Ctrl-r a

    Вставить регистр a прямо в режиме вставки или в командной строке.

Файлы, окна, выход

  • :w / :wq / :x

    Сохранить / сохранить и выйти.

  • :q!

    Выйти без сохранения.

  • :wa / :qa!

    То же для всех открытых буферов.

  • :w !sudo tee % >/dev/null

    Сохранить файл, открытый без прав root.

  • :e файл / :e!

    Открыть файл / перечитать текущий с диска.

  • :ls :b2 :bd

    Список буферов, переход к буферу, закрыть буфер.

  • :sp / :vs

    Разделить окно горизонтально / вертикально.

  • Ctrl-w h j k l

    Переход между окнами; Ctrl-w = выравнивает размеры.

  • :set nu rnu

    Абсолютная и относительная нумерация строк разом — под неё и заточены счётчики.

  • ZZ / ZQ

    Сохранить и выйти / выйти без сохранения, без двоеточия.