Сохранить эту памятку по Vim
7 февраля 2023 г.В этом руководстве я расскажу об основных командах, которые необходимо знать для эффективной работы в Vim. Я рекомендую вам открыть файл с помощью Vim/Neovim и попробовать команду, читая его.
3 наиболее часто используемых режима в Vim:
* Обычный режим: используется для перемещения/редактирования текста. При нажатии <ESC>
в других режимах вы вернетесь в обычный режим.
* Режим командной строки: используется для выполнения команд (например: сохранить файл, открыть файл справки).
* Режим вставки: используется для вставки текста.
Вы можете узнать больше о каждой команде в файле справки Vim. Откройте его, введя :h {имя команды
и нажав Enter.
Обычный режим
Для начала давайте научимся перемещаться в Vim.
Движения вверх-вниз
Узнайте больше с помощью :h движения вверх-вниз
.
k go up
j go down
gg go to first line
G go to last line
Движения влево-вправо
Узнайте больше с :h движениями влево-вправо
.
h go left
l go right
0 go to the first character of the line
^ go to the first non-blank character of the line
$ go to the end of the line
f{char} go to the occurrence of {char} to the right
F{char} go to the occurrence of {char} to the left
t{char} go till before the occurrence of {char} to the right
T{char} go till after the occurrence of {char} to the left
; repeat latest f, t, F or T
, repeat latest f, t, F or T in opposite direction
Движения слов
Узнайте больше с помощью :h word-motions
.
w go one word forward
W go one word forward, ignore symbol
e go forward to the end of word
E go forward to the end of word, ignore symbol
b go one word backward
B go one word backward, ignore symbol
ge go backward to the end of word
gE go backward to the end of word, ignore symbol
Получив возможность перемещаться в Vim, давайте научимся редактировать текст. Схема редактирования выглядит следующим образом:
operator + motion or text-object
Оператор
Подробнее об операторе :h
.
d delete
y yank(copy) into register
(after delete or yank you can use `p` to paste)
c change(delete and start insert)
~ swap case
= format
Несколько примеров оператора + движение:
cw change a wrod
dt( delete till the first occurrence of (
y5j yank to 5 lines down
Исключения:
dd delete current line
D delet until the end of the line
yy yank current line
Y yank until the end of the line
cc change current line
C change until the end of the line
== format current line
Текстовые объекты
Узнайте больше с :h text-objects
.
iw inside word
aw around word
ip inside paragraph
ap around paragraph
it inside tag block (for HTML and XML)
at around tag block (for HTML and XML)
i{ inside {}
a{ around {}
...(you can apply this to any pair block [] () <> '' "" ``)
Некоторые примеры оператора + текстовый объект:
ci" change inside ""
dap delete around paragraph
=i{ format the code inside {}
Примечание. Если текстовый объект представляет собой парный блок, Vim найдет ближайший справа от курсора. Этот прием очень полезен.
Пример (^ указывает на позицию вашего курсора):
#include <stdio.h>
int main(void) {
printf("test");
^
return 0;
}
Вы можете использовать ci"
для изменения текста внутри пары "", даже если ваш курсор находится в начале строки.
Прокрутка
Узнайте больше с помощью :h прокрутки
.
CTRL-U scroll window half a screen upwards
CTRL-D scroll window half a screen downwards
CTRL-B scroll window a screen upwards
CTRL-F scroll window a screen downwards
Вставка
Подробнее о вставке :h
.
i insert text before the cursor
I insert text before the first non-blank in the line
a append text after the cursor
A append text at the end of the line
o begin a new line below the cursor and insert text
O begin a new line above the cursor and insert text
Другое
Вы можете добавить число перед командой, чтобы выполнить ее [count]
раз.
Примеры: 5k
поднимется на 5 строк вверх
s delete character and start insert (synonym for cl)
S delete line and start insert (synonym of cc)
x delete character under the cursor
X delete character before the cursor
u undo
CTRL-R redo
. repeat last change
ZQ quit without checking for changes
ZZ save current file and quit
Режим вставки
<ESC> leave insert mode
i_CTRL-O execute one command in Normal mode and then return to Insert mode
Режим командной строки
(<CR>
означает ввод)
:w<CR> save the current file
:q<CR> quit
:q!<CR> quit without checking for changes (same as ZQ)
:wq<CR> save current file and quit (same as ZZ)
/{pattern}<CR> search forward for the occurrence of {pattern}
?{pattern}<CR> search backward for the occurrence of {pattern}
n repeat the latest `/` or `?`
N repeat the latest `/` or `?` in opposite direction
Заключительные слова
Помните, что выполнение всех этих команд занимает некоторое время. Если вы уже знакомы с этими командами, вы можете продолжить читать рабочий процесс команды vim, чтобы узнать, как перемещать /эффективно редактировать текст в Vim.
:::информация Также опубликовано здесь.
:::
Оригинал