vim/nvim cheat sheet

vim/nvim cheat sheet



Общее


:h[elp] keyword - открыть помощь для keyword
:sav[eas] file - сохранить как file
:clo[se] - закрыть текущую панель
:ter[minal] - open a terminal window
K - открыть справочное руководство для слова под курсором

Tip Run vimtutor in a terminal to learn the first Vim commands.

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


h - передвинуть курсор влево
j - передвинуть курсор вниз
k - передвинуть курсор вверх
l - передвинуть курсор вправо
H - переместиться к началу экрана
M - переместиться к середине экрана
L - переместиться к концу экрана
w - переместиться вперед на начало слова
W - переместиться вперед на начало слова (слово может содержать пунктуацию)
e - переместиться вперед на конец слова
E - переместиться вперед на конец слова (слово может содержать пунктуацию)
b - переместиться назад на начало слова
B - переместиться назад на начало слова (слово может содержать пунктуацию)
ge - jump backwards to the end of a word
gE - jump backwards to the end of a word (words can contain punctuation)
% - move to matching character (default supported pairs: '()', '{}', '[]' - use :h matchpairs in vim for more info)
0 - переместиться на начало строки
^ - переместиться на первый непробельный символ строки
$ - переместиться на конец строки
g_ - переместиться к последнему непустому символу в строке
gg - переместиться на первую строку документа
G - переместиться на последнюю строку документа
5gg or 5G - переместить на пятую строку
gd - move to local declaration
gD - move to global declaration
fx - переместиться к следующему вхождению символа x
tx - переместиться перед следующим вхождением символа x
Fx - jump to previous occurence of character x
Tx - jump to after previous occurence of character x
; - repeat previous f, t, F or T movement
, - repeat previous f, t, F or T movement, backwards
} - переместиться к следующему параграфу (или функции/блоку при редактировании кода)
{ - переместиться к предыдущему параграфу (или функции/блоку при редактировании кода)
zz - center cursor on screen
Ctrl + e - move screen down one line (without moving cursor)
Ctrl + y - move screen up one line (without moving cursor)
Ctrl + b - переместиться назад на целый экран
Ctrl + f - переместиться вперед на целый экран
Ctrl + d - переместиться вперед на половину экрана
Ctrl + u - переместиться назад на половину экрана

Tip Добавьте число перед командой перемещения курсора для того, чтобы повторить её. Например, 4j перемещает курсор на 4 строки вниз.

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


i - вставка перед курсором
I - вставка в начало строки
a - вставка (добавление) после курсора
A - вставка (добавление) в конец строки
o - добавление новой строки под текущей
O - добавление новой строки над текущей
ea - вставка (добавление) после конца слова
Ctrl + h - delete the character before the cursor during insert mode
Ctrl + w - delete word before the cursor during insert mode
Ctrl + j - begin new line during insert mode
Ctrl + t - indent (move right) line one shiftwidth during insert mode
Ctrl + d - de-indent (move left) line one shiftwidth during insert mode
Ctrl + n - insert (auto-complete) next match before the cursor during insert mode
Ctrl + p - insert (auto-complete) previous match before the cursor during insert mode
Ctrl + rx - insert the contents of register x
Ctrl + ox - Temporarily enter normal mode to issue one normal-mode command x.
Esc - выход из режима вставки



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


r - заменить один символ

R

 - replace more than one character, until ESC is pressed.
J - присоединить нижнюю строку к текущей
gJ - join line below to the current one without space in between
gwip - reflow paragraph
g~ - switch case up to motion
gu - change to lowercase up to motion
gU - change to uppercase up to motion
cc - заменить всю строку
C - change (replace) to the end of the line
c$ - заменить до конца строки
ciw - change (replace) entire word
cw or ce - заменить до конца слова
s - удалить символ и заменить текст
S - удалить строку и заменить текст (то же что cc)
xp - переставить две буквы (удалить и вставить)
u - отменить
U - restore (undo) last changed line
Ctrl + r - повторить
. - повторить последнюю команду


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


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

Tip Instead of b or B one can also use ( or { respectively.

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


> - сместить текст вправо
< - сместить текст влево
y - скопировать выделенный текст
d - удалить выделенный текст
~ - переключить регистр
u - change marked text to lowercase
U - change marked text to uppercase


Регистры


:reg[isters] - показать содержимое регистров
"xy - поместить содержимое в регистр x
"xp - вставить содержимое регистра x
"+y - yank into the system clipboard register
"+p - paste from the system clipboard register

Tip Содержимое регистров сохраняется в ~/.viminfo, и будет восстановлено при следующем запуске vim.
Tip Special registers: 0 - last yank
" - unnamed register, last delete or yank
% - current file name
# - alternate file name
* - clipboard contents (X11 primary)
+ - clipboard contents (X11 clipboard)
/ - last search pattern
: - last command-line
. - last inserted text
- - last small (less than a line) delete
= - expression register
_ - black hole register



Метки


:marks - список меток
ma - установить метку A на текущей позиции
`a - переместиться к метке A
y`a - скопировать до метки A
`0 - go to the position where Vim was previously exited
`" - go to the position when last editing this file
`. - go to the position of the last change in this file
`` - go to the position before the last jump
:ju[mps] - list of jumps
Ctrl + i - go to newer position in jump list
Ctrl + o - go to older position in jump list
:changes - list of changes
g, - go to newer position in change list
g; - go to older position in change list
Ctrl + ] - jump to the tag under cursor

Tip To jump to a mark you can either use a backtick (`) or an apostrophe ('). Using an apostrophe jumps to the beginning (first non-blank) of the line holding the mark.


Макросы


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


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


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


Indent text


>> - indent (move right) line one shiftwidth
<< - de-indent (move left) line one shiftwidth
>% - indent a block with () or {} (cursor on brace)
>ib - indent inner block with ()
>at - indent a block with <> tags
3== - re-indent 3 lines
=% - re-indent a block with () or {} (cursor on brace)
=iB - re-indent inner block with {}
gg=G - re-indent entire buffer
]p - paste and adjust indent to current line


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


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


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


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


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


:vim[grep] /pattern/ {`{file}`} - поиск по шаблону в нескольких файлах
e.g. :vim[grep] /foo/ **/*
:cn[ext] - переместиться к следующему совпадению
:cp[revious] - переместиться к предыдущему совпадению
:cope[n] - открыть окно со списком результатов
:ccl[ose] - close the quickfix window


Вкладки


:tabnew or :tabnew {page.words.file} - открыть файл в новой вкладке
Ctrl + wT - переместить текущее окно в собственную вкладку
gt or :tabn[ext] - переключиться на следующую вкладку
gT or :tabp[revious] - переключиться на предыдущую вкладку
#gt - переключить на вкладку номер #
:tabm[ove] # - переместить текущую вкладку на # позицию (нумерация с 0)
:tabc[lose] - закрыть текущую вкладку и все её окна
:tabo[nly] - закрыть все вкладки кроме текущей
:tabdo command - выполнить command на всех вкладках (к примеру :tabdo q - закрывает все открытые вкладки)




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


:e[dit] file - редактировать файл в новом буфере
:bn[ext] - перейти к следующему буферу
:bp[revious] - перейти к предыдущему буферу
:bd[elete] - удалить буфер (закрыть файл)
:b[uffer]# - go to a buffer by #
:b[uffer] file - go to a buffer by file
:ls or :buffers - список всех открытых буферов
:sp[lit] file - открыть файл в новом буфере и разделить окно
:vs[plit] file - открыть файл в новом буфере и вертикально разделить окно
:vert[ical] ba[ll] - edit all buffers as vertical windows
:tab ba[ll] - edit all buffers as tabs
Ctrl + ws - разделить окно
Ctrl + wv - разделить окно вертикально
Ctrl + ww - переключение окон
Ctrl + wq - закрыть окно
Ctrl + wx - exchange current window with next one
Ctrl + w= - make all windows equal height & width
Ctrl + wh - переместить курсор в левое окно (вертикально разделение)
Ctrl + wl - переместить курсор в правое окно (вертикальное разделение)
Ctrl + wj - переместить курсор в окно ниже (горизонтальное разделение)
Ctrl + wk - переместить курсор в окно выше (горизонтальное разделение)
Ctrl + wH - make current window full height at far left (leftmost vertical window)
Ctrl + wL - make current window full height at far right (rightmost vertical window)
Ctrl + wJ - make current window full width at the very bottom (bottommost horizontal window)
Ctrl + wK - make current window full width at the very top (topmost horizontal window)



Diff


zf - manually define a fold up to motion
zd - delete fold under the cursor
za - toggle fold under the cursor
zo - open fold under the cursor
zc - close fold under the cursor
zr - reduce (open) all folds by one level
zm - fold more (close) all folds by one level
zi - toggle folding functionality
]c - jump to start of next change
[c - jump to start of previous change
do or :diffg[et] - obtain (get) difference (from other buffer)
dp or :diffpu[t] - put difference (to other buffer)
:diffthis - make current window part of diff
:dif[fupdate] - update differences
:diffo[ff] - switch off diff mode for current window


источник vim.rtorr.com ©

Содержание