Odpowiedzi:
jest to wykonalne nawet w waniliowym vimie, ale możliwość zastosowania zależy od przypadku użycia, tj. jak często trzeba to powtarzać, ponieważ wymaga kilku kolejnych naciśnięć klawiszy, aby powtarzalność była powtarzalna.
wykorzystując przykładowo przejście w dół o 5 linii, możesz:
:norm 5j
, przesunie kursor w dół o 5 linii@:
aby powtórzyć ruch:norm
oznacza normalny, każdy kolejny ciąg znaków jest uważany za naciśnięcia klawiszy w trybie normalnym
qa
(sklep makro do rejestru a
, można wybrać swój własny rejestr jak qb
, qc
)5j
q
(zakończ nagrywanie makra)@a
aby powtórzyć nagraną operację (zastąp a
wybraną nazwą rejestru, np. @b
, @c
)makro wymaga więcej mocy duchowej do skonfigurowania, ale jest bardziej powtarzalne w tym sensie, że można przechowywać wiele operacji w różnych rejestrach, bez konieczności przesłonięcia ostatnich operacji.
Możesz powtarzać zmiany za pomocą .
. Ruchy można powtarzać za pomocą ;
polecenia. To polecenie wydaje się być nowe i działa podobnie do skryptu repmo.vim wspomnianego w innych odpowiedziach.
Na przykład, aby przejść do drugiego następnego c
, naciśnij 2fc
. Następnie, aby to zrobić ponownie, po prostu wpisz ;
.
Możesz wybrać linie, które chcesz zmienić, i wykonać ostatnie normalne polecenie kropki
v5j .............. visual select next 5 lines
:'<,'>norm! . normal mode execute over selection last command '.'
;
nie jest nowy. To standardowe polecenie vi. Vi zapamiętuje typ i znak docelowy (ale nie argument liczbowy) ostatniego ruchuf
/F
/t
/T
i;
powtarza go. Jednak nie powtarza innych ruchów.