Sehr oft muss ich eine Ersetzung durchführen, bei der Übereinstimmungen über eine große Datei verteilt und mit nicht trivialen Such- und Ersetzungsausdrücken versehen sind.
Angenommen, ich habe einige Funktionsaufrufe wie okFunction(arg1, arg2 arg3)
. Die Argumente unterscheiden sich natürlich bei jedem Funktionsaufruf. Sagen wir jetzt, ich habe eine bessere Funktion entdeckt, die nicht benötigt wird arg2
. Ich kann leicht die gesamte Datei mit anpassen
:%s/\<okFunction(\(\w\+\), \(\w\+\), \(\w\+\))/betterFunction(\1, \3)/gc
Obwohl konzeptionell einfach, bin ich mir nicht sicher, ob ich die Syntax in diesem ziemlich langen Muster richtig verstanden habe. Die c
Flagge hilft hier wirklich, aber das Problem ist, dass vim bei der Bitte um Bestätigung nicht anzeigt, durch was das Match ersetzt wird. Ich meine, es wird den Ersatzausdruck zeigen, aber nicht das ausgewertete Ergebnis. Wenn ich die Auswechslung mit bestätige y
, springt vim sofort zum nächsten Spiel und ich kann nicht sehen, ob ich Fehler gemacht habe.
Ich habe das vim-over- Plugin gefunden, das das Problem teilweise löst, aber nur, wenn beim Eingeben des Befehls alle Mathematikdaten auf dem Bildschirm angezeigt werden. Sobald Sie die Eingabetaste drücken, ist das Verhalten genau das gleiche, das ich oben beschrieben habe, und ich erhalte keine Vorschau.
Gibt es also eine Möglichkeit, vim dazu zu bringen, den Ersetzungsausdruck auszuwerten, wenn eine Bestätigung für Ersatzbefehle angefordert wird?
%
. Überprüfen Sie, ob das Ergebnis dem entspricht, was ich erwartet hatte, und verwenden Sie dann die Substitution mit %
(es sind nur ein paar Tastenanschläge :) :<up><c-b>%
. Eine Vorschauoption wäre natürlich viel effizienter. Obwohl kein Patch verfügbar ist, könnte man die Ersetzung vielleicht mit dieser Option in eine Vimscript-Funktion einbinden, aber das klingt nach viel Arbeit ...