В vim, как мне вернуться туда, где я был до обыска? - PullRequest
252 голосов
/ 10 сентября 2008

Программирование в vim. Я часто хожу искать что-то, дергать, затем возвращаюсь туда, где я был, вставляю это, изменяю это.

Проблема в том, что после того, как я найду и найду, мне нужно ВРУЧНУЮ найти дорогу туда, где я был.

Есть ли автоматический способ вернуться туда, где я был, когда я начал свой последний поиск?

Ответы [ 7 ]

379 голосов
/ 10 сентября 2008

Ctrl + O переносит меня в предыдущее местоположение. Не знаю, где находится до поиска.

Редактировать: Кроме того, `. приведет вас к последнему внесенному вами изменению.

88 голосов
/ 17 сентября 2008

Используйте ``, чтобы вернуться к той позиции, в которой вы находились до поиска / прыжка, или '', чтобы вернуться к началу линии, в которой вы находились до поиска / прыжка.

37 голосов
/ 10 сентября 2008

Я всегда делал это, устанавливая отметку.

  1. В командном режиме нажмите m [буква] . Например, m a устанавливает метку в текущей строке, используя a в качестве идентификатора метки.

  2. Чтобы вернуться к отметке, нажмите '[буква] . Например, 'a возвращает вас к отметке, установленной на шаге 1.

Чтобы увидеть все установленные на данный момент метки, введите : marks .


На слегка неродственной ноте я обнаружил еще одну изящную вещь о знаках.

Допустим, вы переходите к отметке b, выполняя 'b . Vim автоматически устанавливает отметку ' (это одинарная кавычка), чтобы она соответствовала той строке, на которой вы были до перехода к отметке b.

Это означает, что вы можете сделать 'b , чтобы перейти к этой отметке, а затем ' ' (2 одинарных кавычки), чтобы вернуться туда, где вы были раньше.

Я обнаружил это случайно с помощью команды : marks , которая показывает список всех меток.

35 голосов
/ 26 сентября 2008

Вы действительно должны прочитать :help jumplist, это все очень хорошо объясняет.

29 голосов
/ 03 октября 2012

CTRL + O и CTRL + I , для прыжка назад и вперед.

7 голосов
/ 01 мая 2012

Я использую это:

nnoremap / ms/
nnoremap ? ms?

Тогда, если я что-то найду с помощью / или ?, я могу быстро вернуться назад к `s. Вы можете заменить букву s на любую понравившуюся букву.

7 голосов
/ 10 сентября 2008

Самый простой способ - установить отметку с помощью m[letter], а затем вернуться к ней с помощью '[letter]

...