Мне нравится '.
Команда в vim. От :help '.
:Предотвращение изменения Vim
'. `.
[Перейти к] в положение, в котором было сделано последнее изменение. Позиция находится на том или ином месте, где началось изменение.
Ok. Но вот моя проблема: я использую функцию autocmd
для добавления в заголовок файла «последней измененной» строки. Итак, после каждой записи '.
приносит мне не мое «реальное» последнее изменение, а мой заголовок файла. Мое текущее решение - я стараюсь не забывать отмечать текущую точку редактирования ma
, поэтому я могу вернуть 'a
. Я иногда забываю, и даже когда я помню, это еще одно нажатие клавиши.
Мое идеальное решение - это какая-то команда, которая говорит vim не запоминать движения. Я могу отправить эту команду до того, как функция autocmd
перепрыгнет, записав последнюю измененную строку, а затем отменит ее после завершения функции autocmd
. Таким образом, местоположение, связанное с '.
, не будет изменено. Однако я открыт для любых других вариантов, которые более эффективны.
Если вы хотите его увидеть, вот что делает autocmd
на :w
.
function! UpdateHeader()
let b:winview = winsaveview()
" This is where I'd put the command to ignore future movements
"The periods concatenate all the arguments into one command.
"Silent! suppresses errors, usually 'pattern not found'
"The 1,6g means search only lines 1 thru 6
"Search for File Name: followed by anything
"'s'ubstitute
"Substitute in 'File Name: ' and the results of the expand command, on the
"current filename
execute "silent! 1," . 6 . "g/File Name:.*/s//File Name: " . expand("%")
execute "silent! 1," . 6 . "g/Last Modified:.*/s//Last Modified: " . strftime("%d-%m-%Y")
" This is where I'd put the command to start remembering movements again
call winrestview(b:winview)
endfunction
Perfect. Благодарю. – ravron
Примечание для тех, кто пытается реализовать это решение: требуется команда 'keepjumps', где происходит * фактическая модификация текста *, а именно в команде': s', выполняемой командой ': g':' execute ' молчать! 1, ". 6. "g/Имя файла:. */keepjumps s // Имя файла:". расширение ("%") '. – ravron
Еще одно примечание: команда, написанная в предыдущем комментарии, не позволяет установить '' .'. Тем не менее, он все еще добавляет к jumplist. Чтобы предотвратить * это *, добавьте 'keepjumps' снова, сразу после' silent! '. – ravron