Wie benutzt man den Änderungsbaum in vim?

14

Ist es möglich, Änderungen abzurufen, die ich "aufgegeben" habe? uIch mache beispielsweise mehrere Vorgänge mit rückgängig und ändere dann den Einfügemodus. Aber dann wird mir klar, dass ich diese Änderung nicht haben möchte. Ich würde lieber dorthin zurückkehren, wo ich am Anfang war (vor dem Rückgängigmachen).

Sind diese Änderungen für immer verloren?

Nebril
quelle

Antworten:

12

Verwenden Sie zum Navigieren im Rückgängig-Baum am besten das Gundo- Plugin. Dadurch wird ein neues geteiltes Fenster mit speziellen Verknüpfungen zum Springen zu verschiedenen Zweigen innerhalb des Rückgängig-Baums sowie ein Vorschaufenster erstellt, in dem genau angezeigt wird, was sich zwischen den einzelnen Knoten im Baum geändert hat.

Steve Vermeulen
quelle
Eine andere Wahl wäre UndoTree.
musicmatze
12

Für einfache Fälle wie diesen können Sie einfach drücken g-.

Im Wesentlichen wird dabei die Änderungsliste chronologisch ( uals tatsächliche Änderung behandelt) und nicht linear (wie bei u/ <C-r>) durchlaufen .

Wenn Sie beispielsweise einige Zeilen eingefügt haben und auf drücken g-, geschieht Folgendes:

Demonstration

Türknauf
quelle
Wie hast du das animierte GIF erstellt?
Guido
4
@guido Ich habe ein benutzerdefiniertes Tool namens mkcast verwendet .
Türknauf
2

Nein, Sie können im Baum nicht vor- und zurückgehen. Der beste Weg ist, ein Plugin für diesen Job zu verwenden.

Ein weiteres Plugin ist der Undotree . Es ist wie bei Gundo , aber mit einigen Unterschieden:

  1. Eine reine Vimscript-Implementierung und keine Bibliotheken von Drittanbietern (wie Python) sind erforderlich. Machen Sie sich keine Sorgen um die Leistung. Es ist keine große Sache für Vim, damit umzugehen. Die einzige Abhängigkeit ist das 'diff'-Tool, das immer mit vim ausgeliefert wurde. Auch ohne' diff 'können Sie die meisten Funktionen dieses Skripts verwenden.
  2. Echtzeit-Aktualisierung des Undo-Baums. Sobald Sie Änderungen vornehmen, wird der Rückgängig-Baum gleichzeitig aktualisiert.
  3. Mehrere nützliche Markierungen, wie aktuelles Changeset, nächstes Redo Changeset, gespeichertes Changeset usw.
  4. Zwischen relativem Zeitstempel und absolutem Zeitstempel wechseln.
  5. Echtzeit-Aktualisierung des Undo-Fensters.
  6. Die Möglichkeit, den Verlauf rückgängig zu machen.
  7. Anpassbarer.
adelarsq
quelle
4
Wird diese Antwort nicht direkt von der Türklinke widerlegt ?
Caleb,