Общее

  • :help keyword - открыть помощь для keyword
  • :o file - открыть file
  • :saveas file - сохранить как file
  • :close - закрыть текущую панель

Перемещение курсора

  • h - передвинуть курсор влево
  • j - передвинуть курсор вниз
  • k - передвинуть курсор вверх
  • l - передвинуть курсор вправо
  • H - переместиться к началу экрана
  • M - переместиться к середине экрана
  • L - переместиться к концу экрана
  • w - переместиться вперед на начало слова
  • W - переместиться вперед на начало слова (слово может содержать пунктуацию)
  • e - переместиться вперед на конец слова
  • E - переместиться вперед на конец слова (слово может содержать пунктуацию)
  • b - переместиться назад на начало слова
  • B - переместиться назад на начало слова (слово может содержать пунктуацию)
  • 0 - переместиться на начало строки
  • ^ - переместиться на первый непробельный символ строки
  • $ - переместиться на конец строки
  • g_ - переместиться к последнему непустому символу в строке
  • gg - переместиться на первую строку документа
  • G - переместиться на последнюю строку документа
  • 5G - переместить на пятую строку
  • fx - переместиться к следующему вхождению символа x
  • tx - переместиться перед следующим вхождением символа x
  • } - переместиться к следующему параграфу (или функции/блоку при редактировании кода)
  • { - переместиться к предыдущему параграфу (или функции/блоку при редактировании кода)
  • zz - center cursor on screen
  • Ctrl + b - переместиться назад на целый экран
  • Ctrl + f - переместиться вперед на целый экран
  • Ctrl + d - переместиться вперед на половину экрана
  • Ctrl + u - переместиться назад на половину экрана
Tip Добавьте число перед командой перемещения курсора для того, чтобы повторить её. Например, 4j перемещает курсор на 4 строки вниз.

Режим вставки - вставка/добавление текста

  • i - вставка перед курсором
  • I - вставка в начало строки
  • a - вставка (добавление) после курсора
  • A - вставка (добавление) в конец строки
  • o - добавление новой строки под текущей
  • O - добавление новой строки над текущей
  • ea - вставка (добавление) после конца слова
  • Esc - выход из режима вставки

Редактирование

  • r - заменить один символ
  • J - присоединить нижнюю строку к текущей
  • cc - заменить всю строку
  • cw - заменить до конца слова
  • c$ - заменить до конца строки
  • s - удалить символ и заменить текст
  • S - удалить строку и заменить текст (то же что cc)
  • xp - переставить две буквы (удалить и вставить)
  • u - отменить
  • Ctrl + r - повторить
  • . - повторить последнюю команду

Выделение текста (визуальный режим)

  • v - включить режим выделения текста, выделить строки, затем выполнить команду (например, y-копирование)
  • V - включить построчный режим выделения
  • o - переместиться на другой конец выделенной области
  • Ctrl + v - включить режим выделения блоков
  • O - переместить на другой угол блока
  • aw - выделить слово
  • ab - блок в ()
  • aB - блок в {}
  • ib - внутренний блок в ()
  • iB - внутренний блок в {}
  • Esc - выйти из режима выделения текста

Визуальные команды

  • > - сместить текст вправо
  • < - сместить текст влево
  • y - скопировть выделенный текст
  • d - удалить выделенный текст
  • ~ - переключить регистр

Регистры

  • :reg - показать содержимое регистров
  • "xy - пместить содержимое в регистр x
  • "xp - вставить содержимое регистра x
Tip Содержимое регистров сохраняется в ~/.viminfo, и будет восстановлено при следующем запуске vim.
Tip В нулевом регистре всегда хранится содержимое последней команды копирования.

Метки

  • :marks - список меток
  • ma - установить метку A на текущей позиции
  • `a - переместиться к метке A
  • y`a - скопировать до метки A

Макросы

  • qa - записать макрос A
  • q - остановить запись макроса
  • @a - run macro a
  • @@ - выполнить последний макрос

Вырезать и вставить

  • yy - скопировать строку
  • 2yy - скопировать 2 строки
  • yw - скопировать слово
  • y$ - скопировать до конца строки
  • p - вставить буфер обмена после курсора
  • P - вставить буфер обмена перед курсором
  • dd - удалить (вырезать) строку
  • 2dd - удалить (вырезать) 2 строки
  • dw - удалить (вырезать) слово
  • D - удалить (вырезать) до конца строки
  • d$ - удалить (вырезать) до конца строки
  • x - удалить (вырезать) символ

Выход и сохранение

  • :w - сохранить файл, но не выходить
  • :w !sudo tee % - сохранить файл с sudo
  • :wq or :x or ZZ - сохранить файл и выйти
  • :q - выйти (терпит неудачу в случае несохраненных изменений)
  • :q! or ZQ - выйти и потерять несохраненные изменения

Поиск и замена

  • /pattern - поиск шаблона
  • ?pattern - обратный поиск шаблона
  • \vpattern - 'very magic' режим: все не алфавитно-цифровые символы интерпретируются как специальные (экранирование не требуется)
  • n - повторить поиск в том же направлении
  • N - повторить поиск в обратном направлении
  • :%s/old/new/g - заменить все вхождения шаблона в файл на указанное значение
  • :%s/old/new/gc - заменить все вхождения шаблона в файл на указанное значение с подтверждением
  • :noh - отключить подсвечивание результатов поиска

Поиск в нескольких файлах

  • :vimgrep /pattern/ {file} - поиск по шаблону в нескольких файлах
e.g. :vimgrep /foo/ **/*
  • :cn - переместиться к следующему совпадению
  • :cp - переместиться к предыдущему совпадению
  • :copen - открыть окно со списком результатов

Работа с несколькими файлами

  • :e file - редактировать файл в новом буфере
  • :bnext or :bn - перейти к следующему буферу
  • :bprev or :bp - перейти к предыдущему буферу
  • :bd - удалить буфер (закрыть файл)
  • :ls - список всех открытых буферов
  • :sp file - открыть файл в новом буфере и разделить окно
  • :vsp file - открыть файл в новом буфере и вертикально разделить окно
  • Ctrl + ws - разделить окно
  • Ctrl + ww - переключение окон
  • Ctrl + wq - закрыть окно
  • Ctrl + wv - разделить окно вертикально
  • Ctrl + wh - переместить курсор в левое окно (вертикально разделение)
  • Ctrl + wl - переместить курсор в правое окно (вертикальное разделение)
  • Ctrl + wj - переместить курсор в окно ниже (горизонтальное разделение)
  • Ctrl + wk - переместить курсор в окно выше (горизонтальное разделение)

Вкладки

  • :tabnew or :tabnew file - открыть файл в новой вкладке
  • Ctrl + wT - переместить текущее окно в собственную вкладку
  • gt or :tabnext or :tabn - переключиться на следующую вкладку
  • gT or :tabprev or :tabp - переключиться на предыдущую вкладку
  • #gt - переключить на вкладко номер #
  • :tabmove # - переместить текущую вкладку на # позицию (нумереция с 0)
  • :tabclose or :tabc - закрыть текущую вкладку и все её окна
  • :tabonly or :tabo - закрыть все вкладки кроме текущей
  • :tabdo command - выполнить command на всех вкладках (к примеру :tabdo q - закрывает все открытые вкладки)