Часто я редактирую файл - думаю, что моя работа выполнена - затем закрываю файл и перехожу к следующему. Но потом я понимаю, что мне нужно вернуться к этому коду и немного подправить его.
Если открыть файл снова, я могу использовать .
знак и перейти к позиции последнего редактирования с '.
.
Сейчас я пытаюсь найти способ использовать метки vim для перехода к местоположениям в файлах, которые я недавно посетил, но не изменил.
Я знаю, что могу установить метку вручную, но в большинстве случаев я не ожидаю возвращения, и поэтому я не устанавливаю метку и мне нужно использовать метку, которую vim генерирует автоматически. Знак кажется , что это может быть способом для достижения этой цели, с . "
:h motion
"
На позицию курсора при последнем выходе из текущего буфера. По умолчанию используется первый символ первой строки. Смотрите | last-position-jump | как использовать это для каждого открытого файла. Для каждого буфера запоминается только одна позиция, а не для каждого окна. Пока буфер виден в окне положение не будет изменено. {не в Vi}.
Однако, если я
- закройте все окна, показывающие буфер (но буфер все еще присутствует в списке буферов). или же:
- убить все экземпляры буфера
метка, похоже, не обновляется, как я могу использовать метку для перехода к позиции последней позиции курсора в буфере / файле?
источник
Ctrl+o
иCtrl+i
...:h jump-motions
для получения дополнительной информацииviminfo
"
отметке при открытии файла. Я действительно хотел только перейти к последней позиции курсора вручную. Кроме того, я просто не мог понять, когда"
отметка будет установлена и обновлена, поэтому для меня эта"
отметка непригодна.Ответы:
Вот классическое решение: используйте
перейти к последнему HTML-файлу и т. д.
источник
WinLeave
поскольку, как я заметилBufLeave
, похоже, что он не срабатывает, когда вы закрываете разделение, а буфер все еще открыт где-то еще. Я знаю, что это немного крайний случай, но,WinLeave
похоже, он работает в более широком диапазоне ситуаций типа «закрытие файла», но я все еще просто тестирую ...Я написал это заявление Vimscript, который, кажется, работает
объяснение
BufLeave
Авто команда: это, кажется, срабатывает, когда выbd
:normal
- кажется, по умолчаниюcommand
часть autocmd является командой ex. Поэтому, чтобы vim выполнил команду в нормальном режиме, вам нужно добавить:normal
ml
- установить отметкуl
(мнемоника: последняя )использование
чтобы вызвать позицию курсора в последний раз, когда вы были в буфере, просто нажмите
или же
источник
Если вы хотите, чтобы ваш курсор восстановил последнюю позицию, известную viminfo , вы можете использовать
Ответ romainl был особенно полезен для меня, и я много использовал его (так как я веб-разработчик):
Последняя потенциально полезная вещь - это опция
:help 'nostartofline
:источник