`.
Polecenia spowoduje przejście do ostatniej zmiany.
`
Idzie do znaku, a .
to „specjalne” znak, który jest automatycznie ustawiany na pozycji, w której ostatnia zmiana została dokonana. Zobacz :help `.
więcej informacji.
Jest też ``
coś, co spowoduje powrót do miejsca, w którym znajdował się kursor przed ostatnim skokiem. Zobacz : pomoc,``
aby uzyskać więcej informacji.
Kolejnym przydatnym znakiem jest `^
; jest to pozycja, w której kursor był ostatnim razem, gdy tryb wstawiania został zatrzymany. Zobaczyć :help `^
.
Zobacz :help mark-motions
bardziej ogólne informacje na temat używania znaków (w tym niektóre inne „specjalne” znaki, które są ustawiane automatycznie).
g;
i,g,
aby przechodzić między pozycjami na liście zmian. Patrz:h g;
i:h g,
'
(apostrof) zamiast`
(backtick).Oto inne podejście, które pasuje do danego scenariusza i przeskoczy do miejsca, w którym byłeś bezpośrednio przed
gg
(nie do ostatniej zmienionej linii).Posługiwać się CtrlO
Po naciśnięciu
gg
stara pozycja kursora zostaje przesunięta na listę skoków . Od:help jumplist
:Wymaga to używania Vima (nie vi) z tą
+jumplist
funkcją. Jeśli:echo has('jumplist')
drukuje1
, możesz tego użyć.źródło
Aby dodać do odpowiedzi dnetserra i komentarza Petera Rinckera, Vim utrzymuje listę zmian i ma z tym kilka poleceń.
wyświetli listę zmian, pokazując, gdzie były i jakie były. Na przykład:
Linia
>
pokazująca, gdzie jesteś na stosie zmian, przypomina coś w rodzaju listy skoków (:jumps
) lub stosu znaczników (:tags
). Podobnie jak lista przeskoków i stos znaczników, możesz przeglądać tę listę.W trybie normalnym ruchy mają
g;
przejść do poprzedniej lokalizacji zmiany ig,
przejść do następnej. Możesz także wpisać numer zmiany przedg;
lubg,
przejść do tej zmiany z listy. Powyżej2g;
zaprowadzi mnie do miejsca, w którym nastąpiła zmiana dotycząca stdio.h.Gdy są na środku stosu, liczby z
:changes
aktualizacji pokazują względne odległości. Na przykład:To pokazuje, że mogę cofnąć się o jeden (
1g;
lub tylkog;
) lub o jeden do przodu (1g,
lub tylkog,
).Jest to świetne, jeśli zmiana, którą chcesz wprowadzić, pojawiła się kilka modyfikacji temu
Wadą tego jest to, że nie wydaje się działać jak normalny ruch. Na przykład nie można zrobić,
dg;
aby usunąć z kursora do poprzedniej lokalizacji zmiany,d'.
a jednocześnied'^
wykonać ruchy.źródło
g;
przejdzie do poprzednio edytowanej linii.źródło
Ponieważ polecenie cofnięcia w Vi będzie działać jako powtórzenie, gdy ostatnie polecenie zostało cofnięte, wykorzystałem
uu
jako środek powrotu do miejsca, w którym ostatnio edytowałem.Jeśli korzystasz z Vima z
nocompatible
ustawieniami (jak większość ludzi), chcesz użyć,u
a następnieCTRL+R
cofania i ponawiania. W przeciwnym razieuu
będzie działać jak w Vi.źródło
:set nocompatible
nie zostanie użyty.vim
(znocompatible
) wykonuje dwa cofnięcia zuu
, ale używamu
iCTRL+r
dla tego samego efektu.