Как в vim вернуться туда, где я был до поиска?
Вопрос
Программируя в vim, я часто ищу что-то, выдергиваю это, затем возвращаюсь туда, где я был, вставляю это, изменяю.
Проблема в том, что после того, как я найду и найду, мне нужно ВРУЧНУЮ найти дорогу обратно туда, где я был.
Существует ли автоматический способ вернуться туда, где я был, когда начал последний поиск?
Решение
Ctrl+О переносит меня в предыдущее место.Не знаю о местоположении до поиска.
Редактировать:Также, `. приведет вас к последнему внесенному вами изменению.
Другие советы
Использовать ``
чтобы вернуться к тому же положению, в котором вы находились до поиска/прыжка, или ''
чтобы вернуться к началу строки, на которой вы находились до поиска/перехода.
Я всегда делал это, ставя отметку.
В командном режиме нажмите м [буква].Например, м а устанавливает отметку на текущей строке, используя а в качестве идентификатора знака.
Чтобы вернуться к отметке, нажмите ' [письмо].Например, ' а вернет вас обратно к отметке, установленной на шаге 1.
Чтобы просмотреть все отметки, установленные в данный момент, введите :Метки.
Кстати, я только что обнаружил еще одну интересную вещь, связанную с отметками.
Допустим, вы перешли к отметке b, выполнив 'б.Vim автоматически ставит отметку ' (это одинарная кавычка) — это любая строка, на которой вы находились, прежде чем перейти к отметке b.
Это означает, что вы можете сделать 'б прыгнуть на эту отметку, а затем сделать '' (2 одинарные кавычки), чтобы вернуться туда, где вы были раньше.
Я обнаружил это случайно, используя :Метки команда, которая показывает список всех меток.
Вам действительно стоит прочитать :help jumplist
это все очень хорошо объясняет.
CTRL+О и CTRL+Я, для прыжков вперед и назад.
Самый простой способ — установить отметку с помощью m[letter]
, затем вернитесь к нему с помощью '[letter]
Я использую этот:
nnoremap / ms/
nnoremap ? ms?
Затем, если я что-то ищу, используя /
или ?
, я могу быстро вернуться назад `s
.Вы можете заменить букву s
на любое письмо, которое вам нравится.