Ich möchte meinen Workflow zum Suchen und Ersetzen in Vim optimieren. Das ist etwas, was ich oft mache, wie ich mir sicher bin, dass die meisten von Ihnen es auch tun. Normalerweise kopieren Sie einen Block und ändern den Namen einer Variablen an einigen Stellen. Ich weiß, ich weiß, das löst wahrscheinlich deinen Reflex "Warum kopierst du und fügst du Code ein" aus, aber lass uns diesen Weg nicht beschreiten ... Es gibt viele gültige Anwendungsfälle :)
Ich bin mir der Befehle zum Suchen und Ersetzen sehr wohl bewusst: :s
oder :%s
aber ich mag sie nicht. Es zwingt mich, sowohl den vollständigen Variablennamen, den ich suche, als auch den Namen einzugeben, in den ich ihn ändere. Vielleicht gibt es eine bessere Möglichkeit, die Anzahl der Tippvorgänge zu korrigieren :%s
? Ich verwende oft lange beschreibende Variablennamen, so dass das für mich wirklich ein Deal Breaker ist. Ich mag es auch nicht, dass das Herausschreiben eines Variablennamens von Grund auf für Tippfehler anfällig ist und Zeit und Nerven kostet, um Tippfehler aufzuspüren. Ich bevorzuge es, es einmal zu tippen und dann zu kopieren und einzufügen, um dies nach Möglichkeit ganz zu vermeiden.
In meinem aktuellen Arbeitsablauf wird eine Kombination aus "Verschieben" / "Ziehen" / "Auswählen" / "Suchen" / "Platzieren" verwendet, um die Datei zu verschieben und einzeln zu ersetzen. Es ist nicht besonders gut, hat aber den Vorteil, dass Sie keine vollständigen Variablennamen eingeben müssen. Ich muss möglicherweise nur die ersten paar Buchstaben mit /
einem anderen Bewegungsbefehl (z. B. fx
) eingeben und dann ve
das ganze Wort auswählen. Es macht mir auch nichts aus, dass ich das für jeden Fall wiederholen muss. Ich führe niemals einen vollständigen Ersatz durch, ohne jede Änderung zu bestätigen. Es wäre jedoch viel besser, wenn ich die Ersetzungsaktion mit einem einzigen Tastendruck wiederholen könnte (was mit dieser Methode nicht möglich ist). jeder Austausch ist in der Regel so etwas wie n
dann ve
dann p
(oder noch schlimmer "0p
)
Gibt es einen schnelleren Weg?
n
ve
"0p
. Was leider nicht mit nur einem repliziert werden kann.
n ce ctrl-r 0 <esc> n.n.n.n.n.n.
.
wiederholt den letzten "Befehlsblock" (der genaue Begriff ist nicht bekannt. Zum Beispiel: Verschieben + Aktion + Text. Zum Beispiel:cwtoto<Esc>
(Wechsel vom Cursor zum Ende des Wortes mit "toto"),c/foo<enter>bar<Esc>
(Wechsel vom Cursor zu kurz vor " foo ", und durch" bar "ersetzen. Sie können dann verschieben (mit Cursor, hjkl oder einer Zahl + hjkl (macht es n-mal), G (gehen Sie zum Ende der Datei), / etwas (gehen Sie kurz vor" etwas "), etc) und dann drücken.
, um den gleichen" Befehlsblock "zu wiederholen