Команда `.
приведет вас к последнему изменению.
Знак `
идет к отметке и .
является «специальной» отметкой, которая автоматически устанавливается на позицию, где было сделано последнее изменение. Смотрите :help `.
для получения дополнительной информации.
Также есть пункт, ``
который вернет вас туда, где был курсор до того, как вы сделали последний прыжок. Смотрите : помощь``
для получения дополнительной информации.
Еще один полезный знак `^
; это позиция, в которой курсор был в последний раз, когда режим вставки был остановлен. См :help `^
.
См. :help mark-motions
Более общую информацию об использовании меток (включая некоторые другие «специальные» метки, которые устанавливаются автоматически).
g;
иg,
для перемещения между позициями в списке изменений. Смотрите:h g;
и:h g,
'
(апостроф) вместо`
(backtick).Вот еще один подход, который соответствует вашему заданному сценарию и перейдет туда, где вы были непосредственно перед
gg
(не до последней измененной строки).использование CtrlO
Когда вы нажимаете
gg
, ваша старая позиция курсора помещается в список переходов . От:help jumplist
:Это требует, чтобы вы использовали Vim (не vi) с этой
+jumplist
функцией. Если:echo has('jumplist')
печатает1
, то вы можете использовать это.источник
Чтобы добавить ответ dnetserr и комментарий Питера Ринкера, Vim ведет список изменений и имеет несколько команд, связанных с этим.
перечислит изменения, показывая вам, где они были и что они были. Например:
Строка с
>
указанием, где вы находитесь в стеке изменений, вроде как список переходов (:jumps
) или стек тегов (:tags
). Также как список переходов и стек тегов, вы можете просматривать этот список.В обычном режиме движения должны
g;
перейти к предыдущему месту изменения иg,
перейти к следующему. Вы также можете ввести номер изменения доg;
илиg,
перейти к нему из списка. Выше я2g;
бы отправился туда, где произошли изменения с участием stdio.h.Когда в середине стека, числа из
:changes
обновлений, чтобы показать относительные расстояния. Например:Это показывает , что я могу вернуться один (
1g;
или простоg;
) или вперед одну (1g,
или простоg,
).Это замечательно, если изменение, которое вы хотите получить, действительно произошло несколько изменений назад
Недостаток этого состоит в том, что это, кажется, не действует как нормальное движение. Например, вы не можете сделать,
dg;
чтобы удалить из курсора в предыдущее место изменения, тогда какd'.
иd'^
делать как движения.источник
g;
перейдет к ранее отредактированной строке.источник
Поскольку команда отмены в Vi будет действовать как повторная операция, когда последняя команда была отменена, я использовал ее
uu
как способ вернуться туда, где я в последний раз редактировал.Если вы работаете с Vim с помощью
nocompatible
set (как и большинство людей), вы хотите использовать,u
а затемCTRL+R
отменить и повторить. В противном случаеuu
будет работать как в Vi.источник
:set nocompatible
не используется.vim
(сnocompatible
) делает две отмены сuu
, но я используюu
иCTRL+r
для того же эффекта.