суббота, 9 октября 2021 г.

Навигация по документу в vim

    Заезженная тема, но достойная отдельного рассмотрения. Рассмотрим команды перемещения по открытому документу в редакторе vim в нормальном режиме (есть еще режим редактирования, визуальный режим и режим ввода команд после двоеточия). Команды интуитивно сгруппированы в отдельные таблицы и параграфы.
 

аналогия "обычных" клавиш "стрелка вверх" и "стрелка вниз" курсор относительно текста не двигается, текст смещается на одну строку курсор относительно текста не двигается, текст смещается на полэкрана текст смещается на полный экран
вверх Ctrl-p
Ctrl-y Ctrl-u
Ctrl-b
вниз Ctrl-n Ctrl-e Ctrl-d
Ctrl-f

 Ctrl-y и Ctrl-e полезно запомнить, так как эти комбинации имеют полезную функциональность в режиме редактирования: копируют букву в текущей позиции в верхнюю или нижнюю строку соответственно.

текст не перемещаетсяотносительно окна, двигается только курсор
 текст перемещается относительно окна, курсор привязан к позиции в тексте
влево h

вниз j, на дно экрана L
вниз экрана zb
вверх k, вверх экрана H
вверх экрана zt
вправо l

в середину экрана M
в середину экрана zz z.

 

"Глобальные" перемещения:

gg идем в начало;
G
идем в самый конец;
50%
идем в середину всего документа (50% же);
:50
идем на 50-ю строку;

  ctrl-o, ctrl-i перемещаемся вперед-назад по сохраненной истории координат курсора. Не все положения курсора сохраняються в этой истории. Сохраняються координаты, в которые мы попадали в результате перемещения, которое классифицируется как "прыжок". Список сохраненных прыжков можно увидеть командой :jumps. Очень полезная фишка. Вам не нужно бегать по файловому менеджеру в поисках файла, который вы уже когда-то редактировали. Просто войдите в vim в нормальном режиме и понажимайте  ctrl-o, ctrl-i.

Строчные перемещения:

0
переходим в самое начало строки;
^
переходим в на первый непробельный символ строки;
$
переходим в самый конец строки;
-
переходим на начало строки ввех;
+
переходим на начало строки вниз;

Пословные перемещения:

w
переход к началу следующего слова;
W
переход к началу следущего слова;
e
переход к следующему концу слова;
E
переход к следующему концу слова;
b
переход к началу предыдущего слова;
B
переход к началу предыдущего слова;
tx, fx
переход к следующей букве х;
Tх, Fх
переход к предыдущей букве х;
;
повторить предыдущий tfTF-переход;

Ну а про эти команды мне даже как-то неудобно и говорить:
mx установить закладку х;
'x перейти к закладке х;
''
переходим к предыдущему месту, откуда делали последний переход к закладке;
:marks смотрим какие у нас закладки;

Учите клавиатуру. Воздастся. ))


Комментариев нет: