Содержание

Шпаргалка по Vim

Общее

Команда Значение
:help keyword - открыть помощь по ключевому слову
:o file - открыть file
:sav file - сохранить весь текщий буфер как file
:close - закрыть текущую панель
K - открыть справочное руководство для слова под курсором

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

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

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

Команда Значение
h - передвинуть курсор влево
j - передвинуть курсор на одну фактическую строку вниз
k - передвинуть курсор на одну фактическую строку вверх
l - передвинуть курсор вправо
gj - передвинуть курсор на одну видимую строку вниз
gk - передвинуть курсор на одну видимую строку вверх
H - переместиться к началу экрана
M - переместиться к середине экрана
L - переместиться к концу экрана
w - переместиться вперед на начало слова
e - переместиться вперед на конец слова
b - переместиться назад на начало слова
% - переместиться к парному символу (по умолчанию поддерживаются: '()', '{}', '[]' - подробнее по команде :h matchpairs в vim)
0 - переместиться на начало строки
$ - переместиться на конец строки
gg - переместиться на первую строку документа
G - переместиться на последнюю строку документа
5G - переместить на пятую строку (соответственно цифре)
} - переместиться к следующему параграфу (или функции/блоку при редактировании кода)
{ - переместиться к предыдущему параграфу (или функции/блоку при редактировании кода)
Ctrl + b - переместиться назад на целый экран
Ctrl + f - переместиться вперед на целый экран
Ctrl + d - переместиться вперед на половину экрана
Ctrl + u - переместиться назад на половину экрана

Чтобы узнать номер строке, на которой в файле стоит курсор, и информацию о файле нужно нажать Ctrl + g.
Чтобы перейти на строку номер N нужно набрать номер соответствующей строки (N), а потом нажать Shift + g

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

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

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

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

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

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

Многие команды, изменяющие текст, состоят из оператора и объекта. Формат команды удаления с оператором d следующий:

 d объект

Здесь:

Формат команды в обычном режиме имеет вид:

[число] команда объект ИЛИ команда [число] объект

где:

Краткий список объектов:

Замечание! Простое нажатие на символ объекта в обычном режиме (Normal mode) без предварительного оператора переместит курсор так, как указано в списке объектов.

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

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

Копирование/вставка из системного буфера обмена

Команда Значение
:set paste - вход в режим вставки
:set nopaste - выход из режим вставки
Ctrl+Shift+V - вставить в файл, если в режиме вставки; Command+Shift+V для Mac

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

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

Включение некоторых параметров при поиске:

set XXX

где XXX может принимать значения:

Для отключения параметров следует добавить 'no' перед параметром:

:set noic

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

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

Сворачивание

Команда Значение
zf#j - создает свертку от текущей позиции до # строк вниз
zf/подстрока - создает свертку от текущей позиции и до первой найденной подстроки
v/V и zf - выделение блока и создание свертки

Команды для управления:

Команда Значение
zc - свернуть блок
zo - развернуть блок
zM - закрыть все блоки
zR - открыть все блоки
za - инвертирование (если открыто – закрыть, если закрыто – открыть)
zj - переход к следующей свертке
zk - переход к предыдущей свертке
zd - удалить свертку под курсором
zD - удалить все свертки
[z - перейти к началу текущей свертки
]z - перейти к концу текущей свертки

После закрытия Vim все свертки забываются, для сохранения сверток в открытом файле используется команда :mkview, для загрузки - :loadview.

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

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

Вкладки

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

Регистры

Команда Значение
:reg - показать содержимое регистров
«xy - поместить содержимое в регистр x
«xp - вставить содержимое регистра x

Метки

:marks - список меток

ma - установить метку A на текущей позиции

`a - переместиться к метке A

y`a - скопировать до метки A

Оглавление