Режимы
NVim не воспринимает русскую раскладку во время работы с коммандами! Нужно перключаться на английскую.
Сама работа в симе поделена на несколько режимов, которые определяют доступный пул действий, которые мы можем выполнять в редакторе.
В Vim существует 5 режимов:
- normal - просмотр кода. Это основной режим для навигации, который является стандартным и используется для перемещения по файлу.
- insert - вставка. Позволяет вводить текст.
i
- войдёт в режим вставки перед текущей позицией курсора.I
- войдёт в режим вставки в начале строки.a
- войдёт в режим вставки после текущей позиции курсора.A
- войдёт в режим вставки в конце строки.o
- создаст новую строку ниже текущей и войдите в режим вставки.O
- создаст новую строку выше текущей и войдёт в режим вставки.r
- заменит текущий символ (без перехода в режим вставки).R
- войдёт в режим замены, где можно будет заменять символы непосредственно.
- visual - выделение кода
v
- войдёт в режим визуального выделения для выделения текста.V
- войдёт в режим визуального выделения для выделения строк.Ctrl + v
- войдёт в режим блочного выделения для выделения прямоугольных областей текста.
- replace - ввод с перезаписью существующего текста.
- command - позволяет работать с коммандами vim
:
- вызывает режим команд
Базовые перемещения
ctrl + o
- отменит любое движение и действие, которое было выполнено.
Базовые движения
Для базовых перемещений по коду:
j/k
- вверх-внизh/l
- влево-вправо
Горизонтальные перемещения:
0
- перемещает в начало строки$
- перемещает в конец строкиw/b
- переход вперёд/назад по словам с учётом пробеловW/B
- переход по словам без учёта пробелов (помогает, если перемещаемся по большому количеству спецсимволов<title>Слова внутри тега</title>
)e
- переходит в конец текщего словаE
- игнорирует символы, кроме пробела, перемещаясь к концу слова.
Вертикальные перемещения:
число + G
- перемещение на определённую строку (перейдёт на выбранную по числу строку)число + jk
- перемещение вверх/вниз на определённое число строкgg
- перемещение в начало файлаG
- перемещение в конец файла
Как практиковаться
Даже если пока не получается сидеть в виме, можно установить плагин для работы с Vim Motions в любом редакторе
Комбинации движений
Комбинации - это последовательность действий. которые мы можем выполнить за счёт объединения сочетаний в виме
Operator - это действие, которое нужно выполнить над текстом Count - это количество Motion (так же есть альтернатива в виде указания места) Motion - это действие передвижения, в рамках которой будет выполнен оператор
d3w
удалит 3 слова (aka delete 3 words)
d3j
удалит уже 3 строки вниз
di(
- удалит текст внутри скобок
Все те движения, что мы совершаем в виме - мы можем откатить. Если нам нужно будет откатиться на прошлое движение, то мы можем воспользоваться ctrl + o
. Может это быть полезно, например, если мы зашли внутрь типа и нам нужно быстро вернуться обратно либо в случае, когда мы перешли не в ту часть файла.
Продвинутое перемещние
$
- переход в начало строки
0
- переход в начало строки
gg
- переход в начало файла
G
- переход в конец файла
:set nu
вызовет номера строк
:set relativenumber
вызовет относительные номера строк, которые позволят нам не считать количество строк, на которое мы можем переместиться, например, той же командой 5j
f
ищет определённую букву в строке вперёд, а shift+f
ищёт назад
f
+ o
- найдёт первую найденную букву o
в строке
2fo
- перейдёт сразу ко второй названной o
в строке
Если нужно продолжать передвигаться дальше по найденной букве, то мы нажимаем ;
Перемещение по блокам
{
/ }
- позволяют перемещаться между разрывами строк
%
- позволяет нам передвигаться между открывающей и закрывающей скобками (любыми)
[
/ ]
+ определённый тип скобки - позволит переместиться к ближайшей скобке
[}
переместит изнутри блока к ближайшей фигурной скобке. А уже комбинация ]}
сделает то же самое, но к закрывающей скобке. Так же это работает и с любыми другими скобками.
ctrl + d
/ ctrl + u
- перемещение на страницу вниз/вверх
_
- позволит нам перейти к первому символу строки. В отличе от 0
, который переносит нас в целом в начало строки (даже включая табы).
-
/ +
уже будут переводить к началу/концу следующей строки
Файлы и buffers
Как уже и упоминалось ранее, vim работает с буфферами - он загружает файл в ОЗУ и редактирует его в нём.
Открыть файл мы можем через команду :edit <file>
Открыть директорию с файлами мы можем через :edit .
. Тут у нас появится напрямую файловый менеджер из вима. Все команды указаны сверху и, например, R
позволит переименовать файл.
Команда :buffers
позволит выписать список буфферов. В первом столбце идёт идентификатор буффера. Для перехода в определённый буффер, мы можем воспользоваться :buffer <id_буфера>
для перехода в нужный
:bnext
/ :bprevious
позволят переместиться к следующему/предыдущему буферу
:buffer {
позволяет перейти в доку и узнать, что делает определённое сочетание на случай того, если мы забыли, что делает определённая команда