Podoba mi się polecenie '.
w vim. Od :help '.
:Zapobieganie zapamiętywaniu Vima
'. `.
[Skok do] pozycję, w której ostatnia zmiana została wprowadzona. Pozycja znajduje się w pobliżu miejsca rozpoczęcia zmiany.
Ok. Ale oto mój problem: używam funkcji autocmd
, aby dodać wiersz "ostatniej modyfikacji" w nagłówku mojego pliku. Tak więc, po każdym napisaniu, '.
przynosi mi nie do mojej "prawdziwej" ostatniej zmiany, ale do mojego nagłówka pliku. Moje obecne rozwiązanie polega na tym, że staram się zapamiętać, aby oznaczyć mój obecny punkt edycji numerem ma
, aby móc go odesłać do 'a
. Czasami jednak zapominam, a nawet kiedy pamiętam, to kolejne kilka naciśnięć klawiszy.
Moim idealnym rozwiązaniem byłoby polecenie, które mówi, że nie należy pamiętać ruchów. Mogę wysłać to polecenie, zanim funkcja autocmd
przeskoczy, zapisując ostatnią zmodyfikowaną linię, a następnie anuluje ją po zakończeniu funkcji autocmd
. W ten sposób lokalizacja związana z '.
nie zostanie zmieniona. Jestem jednak otwarty na wszelkie inne opcje, które są bardziej wydajne.
Jeśli chcesz go zobaczyć, oto, co robi autocmd
na :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
Idealny. Dzięki. – ravron
Uwaga dla każdego, kto próbuje wdrożyć to rozwiązanie: komenda 'keepjumps' jest potrzebna w przypadku, gdy * faktyczna modyfikacja tekstu ma miejsce * - mianowicie w poleceniu': s' wykonywanym przez komendę ': g':' execute ' cichy! 1, ". 6. "g/Nazwa pliku:. */keepjumps s // Nazwa pliku:". expand ("%") '. – ravron
Jeszcze jedna uwaga: polecenie zapisane w poprzednim komentarzu zapobiega ustawianiu '' .'. Jednak nadal dodaje do listy skoczków. Aby zapobiec * tej *, dodaj 'keepjumps' ponownie, zaraz po' cichym! '. – ravron