Der `.
Befehl bringt Sie zu Ihrer letzten Änderung.
Das `
geht zu einer Marke und .
ist eine "spezielle" Marke, die automatisch an die Position gesetzt wird, an der die letzte Änderung vorgenommen wurde. Sehen Sie :help `.
für einige weitere Informationen.
Es gibt auch ``
welche, die Sie dorthin zurückbringen, wo sich der Cursor befand, bevor Sie Ihren letzten Sprung gemacht haben. Siehe : Hilfe``
für weitere Informationen.
Eine weitere nützliche Marke ist `^
; Dies ist die Position, an der sich der Cursor zuletzt befand, als der Einfügemodus gestoppt wurde. Sehen :help `^
.
Sehen Sie :help mark-motions
für einige weitere allgemeine Informationen über die Verwendung von Marken (darunter auch einige andere „spezielle“ Markierungen , die automatisch eingestellt werden).
g;
und verwendeng,
, um zwischen Positionen in der Änderungsliste zu wechseln. Siehe:h g;
und:h g,
'
(Apostroph) anstelle von`
(Backtick) verwenden.Hier ist ein anderer Ansatz, der zu Ihrem vorgegebenen Szenario passt und zu der Stelle springt, an der Sie sich unmittelbar vor dem befanden
gg
(nicht zu der zuletzt geänderten Zeile).Verwenden CtrlO
Wenn Sie drücken
gg
, wird Ihre alte Cursorposition auf die Sprungliste verschoben . Von:help jumplist
:Dies setzt voraus, dass Sie Vim (nicht vi) mit der
+jumplist
Funktion verwenden. Wenn:echo has('jumplist')
druckt1
, dann können Sie diese verwenden.quelle
Um die Antwort von dnetserr und den Kommentar von Peter Rincker zu ergänzen, verwaltet Vim eine Liste von Änderungen und weist einige damit verbundene Befehle auf.
listet die Änderungen auf und zeigt Ihnen, wo sie waren und was sie waren. Zum Beispiel:
Die Zeile mit dem
>
Symbol zeigt, wo Sie sich im Änderungsstapel befinden, ähnlich wie die Sprungliste (:jumps
) oder der Tag-Stapel (:tags
). Ebenso wie die Sprungliste und der Variablenstapel können Sie diese Liste durchlaufen.Im normalen Modus sollen die Bewegungen
g;
zu einem vorherigen Änderungsort undg,
zum nächsten gehen. Sie können auch die Nummer der Änderung vorg;
oderg,
nach dieser Änderung aus der Liste eingeben. Oben,2g;
würde mich dahin bringen, wo die Änderung mit stdio.h stattgefunden hat.In der Mitte des Stapels werden die Zahlen aus
:changes
aktualisiert, um die relativen Abstände anzuzeigen. Zum Beispiel:Dies zeigt, dass ich einen (
1g;
oder nurg;
) zurück oder einen (1g,
oder nurg,
) vorwärts gehen kann .Dies ist großartig, wenn die Änderung, zu der Sie gelangen möchten, tatsächlich vor einigen Modifikationen stattgefunden hat
Dies hat den Nachteil, dass es nicht wie eine normale Bewegung zu wirken scheint. Zum Beispiel können Sie nicht tun
dg;
, um vom Cursor zur vorherigen Änderungsposition zu löschen, wohingegend'.
undd'^
als Bewegungen arbeiten.quelle
g;
wechselt zur zuvor bearbeiteten Zeile.quelle
Da der Rückgängig-Befehl in Vi als Wiederholung fungiert, als der letzte Befehl rückgängig gemacht wurde, habe ich ihn
uu
als Mittel verwendet, um dorthin zurückzukehren, wo ich ihn zuletzt bearbeitet habe.Wenn Sie Vim mit
nocompatible
set ausführen (wie die meisten Leute), möchten Sie,u
gefolgt vonCTRL+R
, undo & redo verwenden. Ansonstenuu
wird wie in Vi gearbeitet.quelle
:set nocompatible
nicht verwendet wird.vim
(mitnocompatible
) macht zwei Undos mituu
, aber ich benutzeu
undCTRL+r
für den gleichen Effekt.