Diese Antwort sagt:
Das Undo / Redo-System von Vim ist unschlagbar. Geben Sie etwas ein, machen Sie es rückgängig, geben Sie etwas anderes ein, und Sie können immer noch das erste zurückgeben, das Sie eingegeben haben, da Vim einen Rückgängig-Baum anstelle eines Stapels verwendet. In fast jedem anderen Programm geht unter diesen Umständen die Geschichte der ersten Eingabe verloren.
Dies ist das erste Mal, dass ich davon höre. Wie kann ich am Baum entlang zurückgehen?
Antworten:
Siehe auch
:h undo-redo
, in dem alle Befehle und ihre Verwendung aufgelistet sind.Es gibt zwei Möglichkeiten, den Rückgängig-Baum zu durchlaufen. Eine ist, "in der Zeit zurück zu gehen".
g+
undg-
durchläuft alle Knoten im Baum in chronologischer oder umgekehrter chronologischer Reihenfolge (was etwas verwirrend sein kann, da es willkürlich zwischen rückgängig gemachten Zweigen springen kann, aber wenn Sieg-
lange genug tun , werden Sie immer dahin gelangen, wo Sie hin müssen schließlich).:earlier
und:later
nimm einen Zeitdeskriptor wie7m
oder1h
; Auch dies kann Sie willkürlich zwischen rückgängig gemachten Zweigen springen lassen.Der andere Weg ist , um bestimmten Knoten im Baum zu springen mit
:undo n
denenn
eine Reihe von einer Handlung ist. (Alle Aktionen, dh das Hinzufügen, Löschen und Ersetzen von Text, werden dabei fortlaufend nummeriert.) Sie können die Anzahl der Aktionen auf den Blättern des Rückgängig-Baums über nachschlagen:undolist
. Auf diese Weise können Sie problemlos zwischen Zweigen springen. Sie können dannu
und verwendenCtrl-R
, um diesen Zweig auf und ab zu bewegen.In der Vim-Hilfe finden Sie einige gute Beispiele. Der beste Weg, um herauszufinden, wie das funktioniert, ist ein bisschen damit zu spielen.
quelle
undojoin
das nichts mit Zweigen zu tun. Tatsächlich beginnt der nächste Hilfeabschnitt mit den Worten: "Oben haben wir nur eine Zeile zum Rückgängigmachen / Wiederherstellen besprochen. Es ist aber auch möglich, abzweigen." Gibt es eine Möglichkeit,undojoin
mit Zweigen zu arbeiten, die ich gerade nicht sehe?Ich bin etwas spät zur Party, aber ich dachte, ich würde erwähnen, dass ich ein Plugin zum Rückgängigmachen der Baumvisualisierung für Vim geschrieben habe: http://bitbucket.org/sjl/gundo.vim/
Persönlich stellte ich fest, dass die grafische Darstellung des Baumes die einzige Möglichkeit war, einen Sinn daraus zu ziehen.
quelle
Plug 'sjl/gundo.vim'
und dann installiert werdennnoremap <F5> :GundoToggle<CR>
(<F5>
durch eine beliebige Tastenfolge ersetzen , die Sie binden möchten)Diese Seite erklärt alles, was Sie wissen müssen:
http://vimdoc.sourceforge.net/htmldoc/usr_32.html
quelle
Wenn Sie vim verwenden, können Sie durch den Rückgängig-Baum navigieren, indem Sie:
u
: (Rückgängig) gehe zurück in den Rückgängig-BaumCtrl+R
: (Wiederherstellen) Bewegen Sie sich im Rückgängig-Baum vorwärtsAndere Möglichkeiten, um Dokumente rechtzeitig vor- oder zurückzubringen:
:earlier 15m
: 15 Minuten zurückversetzen:later 15m
: Bewegen Sie sich rechtzeitig 15 Minuten nach vornequelle
earlier
undlater
es nicht über Zweige bewegt. Ich würde erwarten, dass sich die meisten Menschen nicht wirklich um die verschiedenen Zweige kümmern oder sich daran erinnern, die sie geschaffen haben. Aber ich möchte einfach in die Vergangenheit reisen. Wenn Sie Zweige erstellen und benennen möchten, istgit
ein Versionskontrollsystem die bessere Option.Ich bin mir bewusst, dass diese Frage beantwortet wurde, aber ich dachte, ich würde ein Beispiel hinzufügen.
Erstellen Sie eine neue Datei und geben Sie Folgendes ein:
undol
zeigt den Rückgängig-Baum an. Zu diesem Zeitpunkt haben Sie noch nichts rückgängig gemachtDrücken Sie nun ESC und ändern Sie die Zeile in:
Wechseln Sie in den normalen Modus und drücken Sie u (Rückgängig). Dadurch sollte "alt" entfernt werden. Wenn Sie dies überprüfen
undol
, haben Sie zu diesem Zeitpunkt nur noch einen Zweig.Ändern Sie nun die Zeile so, dass sie lautet:
Jetzt
:undol
zeigt:Sie können durch Eingabe zum ersten Zweig wechseln
Dadurch gelangen Sie zum Ende des mit Nummer 2 verknüpften Zweigs. Sie können sich mit
g+
und entlang dieses Zweigs bewegeng-
. An diesem Punktg+
wird nichts tun (Sie sind am Blatt). Wenn Sieg-
"alt" drücken, wird entfernt (Sie durchlaufen den ersten Rückgängig-Baum). Wenn Sie "alt" mit entferneng-
undg+
erneut drücken , wird "alt" erneut erstellt.Wenn Sie tippen
Sie springen zum Blatt des zweiten Rückgängig-Zweigs und es lautet:
quelle
Vieles davon ist hier zusammengefasst:
http://vim.wikia.com/wiki/Using_undo_branches
quelle
Neben der Verwendung von gundo.vim möchte ich erwähnen ,
g+
undg-
quelle
Das Paket undotree ist in reinem Vimscript geschrieben, daher keine Anforderung.
Und füge dies deinem vimrc hinzu, bevor es zu spät ist:
quelle