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.