Ich versuche, ein hervorgehobenes Rückgängigmachen in Vim zu haben, wie die Standardkonfiguration von Spacemacs. Manchmal, wenn ich schnell rückgängig machen möchte, kann ich nicht erkennen, was sich geändert hat, weil es augenblicklich ist. Also versuche ich so etwas zu haben, wenn eine Presse rückgängig macht:
Hat jemand eine Idee, wie man das in Vim macht?
(Ich habe bereits ein Gundo-Plugin, ich möchte nur das Rückgängigmachen der Standardeinstellung reibungsloser gestalten.)
Bearbeiten : Das Undotree- Plugin erledigt die Arbeit ( Gundo hebt die Änderungen nicht hervor). Verwenden Sie einfach den UndotreeToggle
Befehl und alle zukünftigen Änderungen an der Datei werden hervorgehoben.
matchadd()
, etwas kniffliger ist es jedoch, herauszufinden, welche Teile der Datei geändert wurden.Antworten:
Neue Lösung
Sie können Ihre letzten Änderungen mit dem
:changes
Befehl anzeigen . Sie können also Ihre letzte Zeilenänderung mit einem regulären Ausdruck durchführen und die Zeile dannmatchadd()
wie von @joeytwiddle vorgeschlagen auf anwenden.Hier ist der Code:
Hinweis :
Diese Funktion fügt nur eine neue Markierung hinzu, ohne die alte zu entfernen. Sie müssen also zuerst die alte entfernen.Mit derclearmatches
Funktion können Sie die Übereinstimmungen entfernen, bevor Sie eine neue hinzufügen. Vorsicht, es werden ALLE Übereinstimmungen entfernt. Wenn Sie mehr Granularität wünschen, können Sie Ihre Übereinstimmung speichern und manuell entfernen:z.B
Verweise :
Alte Lösung
Hier ist eine mögliche Lösung, die hauptsächlich vom aktuellen Diff-Puffer und der Originaldatei inspiriert ist :
Die Idee ist, die Datei mit der Datei auf dem System zu vergleichen, so dass Sie Ihre letzte Änderung rückgängig machen, sie schreiben, die Laseränderung wiederholen und den Vergleich ausführen.
Ich denke, dies sollte den Job für zeitliche Diff-Visualisierungen von Zeit zu Zeit erledigen.
quelle
Überprüfe mein Änderungs-Plugin und stelle sicher, dass die Variable
g:changes_linehi_diff
auf 1 gesetzt istquelle
Für jemanden, der das Gleiche von mir versucht, ist das am nächsten, den ich dank der Antworten erreicht habe.
quelle