6.13. Быстрое перемещение в Vim

Проблема

Вы редактируете большой документ или несколько файлов одновременно, и вам приходится часто перемещаться туда-сюда между разными секциями. Однако на перемещения уходит много времени, и вы постоянно сбиваетесь с текущей позиции.

Решение

Воспользуйтесь маркерами Vim для сохранения позиции курсора (по аналогии с книжными закладками).

Существуют 52 закладки: a-z и A-Z. В командном режиме установите курсор в нужную позицию и введите команду:

ma

Чтобы вернуться к маркеру, введите команду:

'a

(Обратите внимание: апостроф используется прямой, а не обратный! В Vim нет использования обратного апострофа для этой команды.)

Маркеры нижнего регистра работают только в пределах одного файла. Для перехода к другому файлу следует использовать маркеры верхнего регистра. Допустим, вы пометили позицию в файле configstuff.txt:

mA

Теперь, введя команду 'A в любом открытом файле или окне, Vim перейдёт к отмеченной позиции в configstuff.txt, открыв файл, если он ещё не открыт. Это очень удобно, когда вы работаете с несколькими файлами одновременно.

Маркеры верхнего регистра хранятся в файле ~/.viminfo, поэтому они восстанавливаются при следующем запуске Vim, что позволяет продолжать работу с файлами без необходимости повторного поиска нужных позиций.

Также в Vim есть нумерованные маркеры, которые запоминают последнюю позицию курсора в каждом редактируемом файле. Вам не нужно устанавливать их вручную. При завершении работы с файлом Vim автоматически запоминает эту позицию. Чтобы вернуться к последней позиции при следующем запуске, используйте команду:

'"

Это особенно полезно, если вы часто возвращаетесь к ранее редактируемым файлам. Вы всегда сможете сразу оказаться на том месте, где остановились в прошлый раз.

Ещё один полезный приём — использование команды Ctrl+o, которая перемещает вас назад к предыдущей позиции курсора, и команды Ctrl+i для перемещения вперёд. Эти команды позволяют быстро перемещаться по истории изменений в документе, что полезно при редактировании больших файлов.

Если вы часто используете поисковые команды, такие как / для поиска строк или ? для поиска в обратном направлении, можно использовать маркеры для сохранения текущей позиции перед началом поиска, а затем легко возвращаться к исходной точке, если поиск приведёт к перемещению на другое место.

Если вам нужно быстро перемещаться по документу, вы также можете использовать команды для перехода к определённой строке, например:

:10

Это переместит курсор на 10-ю строку файла. Вы также можете использовать команду gg, чтобы перейти к первой строке файла, или G, чтобы перейти к последней строке.

Воспользуйтесь всеми этими возможностями Vim, чтобы ускорить свою работу с большими документами и улучшить эффективность редактирования.

См. также

Справочная система Vim: :help mark-motions, :help viminfo.