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 ©
Содержание