2008-09-10 3 views
238

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

Проблема в том, что после того, как я обыскаю и нахожу, мне нужно ВПЕРВЫЕ найти свой путь обратно туда, где я был.

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

+0

Возможный дубликат [Переместить курсор в его последнюю позицию] (http://stackoverflow.com/questions/5052079/move-cursor-to-its-last-position) – 2015-09-19 09:09:10

ответ

354

Ctrl + O берет меня на прежнем месте. Не знаю о местоположении перед поиском.

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

+0

Также кажется, что одновременное нажатие CTRL + O также приведет к возврату через ранее открытые файлы. – 2008-09-10 12:50:42

+1

Ctrl + O - мой предпочтительный метод. Я использую его постоянно и желаю, чтобы другие редакторы воспроизвели его поведение. – amrox 2008-09-10 12:59:55

34

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

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

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

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


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

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

Это означает, что вы можете сделать «б для перехода к этой отметке, а затем сделать „“ (2 одинарные кавычки), чтобы перейти обратно в whever вы были раньше.

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

+5

К счастью, знак часто не нужен, поскольку vim сохраняет специальные отслеживать некоторые позиции и дает вам доступ к ним с помощью ``,^O и т. д. – aehlke 2011-04-14 03:19:58

+0

. Кажется, что метка ведет меня к началу строки, на которой она была установлена.): – 2015-04-18 09:39:02

+1

@ HermannIngjaldsson Возможно, вы уже догадались об этом, но при использовании «приведет вас к отмеченной строке» вы попадете в точное место. – azmr 2016-02-11 16:11:41

7

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

+0

Это удовольствие видеть вас, когда я ищу советы по vim. Я использовал ctrl-o больше вместе с ctrl-i, потому что он делает шаг назад и вперед проще и более автоматически. – MattK 2011-12-22 00:54:51

84

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

31

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

7

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

nnoremap/ms/ 
nnoremap ? ms? 

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

24

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