2017-10-10 2 views
0

ich mich, wenn es möglich ist, einzelne Redo-Schritt in Vim zu umgehen, während dem Verfahren Undo/Redo-History von u und Ctrl + r.Vim Bypass Redo Schritt

Ich weiß über wundervolle vim's Rückgängig-Baum, aber manchmal möchte man einfach einzelne falsche/zufällige Änderung vermeiden.

Das ist zum Beispiel, während einige komplexe Änderung und die Suche nach Kontextinformationen ist nicht so ungewöhnlich, versehentlich auf einen Schlüssel, wie ~ oder (im Visual-Modus) U versehentlich.

In diesen Fällen, nachdem ich bemerkt habe, dass ich etwas kaputt gemacht habe, benutze ich normalerweise Undo, um die letzten Änderungen schnell zu überprüfen. Ich finde diesen Fehler an Ort und Stelle, aber ich kann den Fehler nicht beheben, weil ich einen neuen Undo-Zweig erstellen würde in denen konnte ich nicht unter Veränderungen reproduzieren ich vorher undowed so muss ich Ctrl +r wiederholt getroffen, bis letzte Änderung antwortete und dann manuell den Fehler finden (was ich jetzt weiß, was es ist) zu beheben es.

Wenn es nur eine Art und Weise ist zu „springen“ single Ctrl +r dass falsche Änderung zu vermeiden wiedergegeben werden, der gesamte Prozess würde schneller viel mehr worden.

Antwort

1

Nein, das ist nicht möglich. Dieses "Feature" würde erfordern, dass Vim das Undo/Redo intern als eine Liste von Befehlen speichert, die auf den Text angewendet werden sollen (und was würden Sie mit Dateineuladungen von externen Änderungen oder mit (benutzerdefinierten) Befehlen machen, die nicht idempotent sind?) .

Es gibt jedoch einen Workflow, der die Bearbeitung und Wiedergabe einer Kette von Befehlen ermöglicht: macros. Wenn Sie Ihre Aktionen in einem Makro aufzeichnen (z. B. qq), können Sie die Aufzeichnung stoppen und das Register bearbeiten (in der Befehlszeile: :let @q = '<C-r>q' oder durch Einfügen in einen Zwischenspeicher, Bearbeiten und erneutes Janking). Wiederhole dann so oft wie nötig.

+0

Danke. Ich verstehe es. In Bezug auf Ihre Problemumgehung, wenn ich es gut verstanden habe, muss ich mit der Aufnahme beginnen, bevor ich weiß, dass ich einen Fehler begehen werde, der mir etwas peinlich erscheint. Aber es ergibt sich für mich ein anderer (vielleicht möglich) Ansatz: Wenn wir einen Shoot zwischen zwei Redo Steps machen könnten, sollte es möglich sein, einen Unterschied zwischen ihnen zu erzeugen und es als Patch anzuwenden. BTW, die Antwort auf meine ursprüngliche Frage ist "Nein" (Danke). Aber ich werde diese Gedanken im Gedächtnis behalten. Vielleicht kann ich es später versuchen ... – bitifet