Ich weiß, dass es eine alte Frage ist, und @ mykola-golubyevs Weg ist offensichtlich die beste Antwort für den speziellen Fall in der OP-Frage (die vermutlich verschleierten Code durchläuft, bei dem Sie wahrscheinlich mehrere Blöcke mit denselben Variablennamen haben). ;; Aber mit dem Namen dieser Frage suchen viele Leute, die von Google Search hierher kommen, wahrscheinlich nach weniger situationsspezifischen Möglichkeiten, Variablen in VIM umzubenennen - und diese können präziser sein
Ich bin überrascht, dass niemand so vorgeschlagen hat:
*
:s//
NEUER NAME /gc
Das *
ist die gleiche wie gn
- es ist für das nächste Vorkommen des Wortes unter Cursor sucht , und es wird die letzte Muster gesucht, so dass , wenn Sie das Suchmuster in dem Ersatz Befehl weglassen, VIM setzt dies voraus , das Muster zu suchen ist.
Für kleine Mengen von Var-Kopien eine noch schnellere:
*
cw
NEWNAME wird <esc>
dann n.
für andere Vorkommen wiederholt
Suche nach Vorkommen, cw
ist der Befehl zum Ändern des Wortes , wechselt n
zum nächsten Vorkommen des zuletzt gesuchten Begriffs und .
wiederholt den letzten Befehl (das ist das Ändern des Wortes in NEWNAME ).
(Credits für mich, das alles zu wissen, gehen an @doomedbunnies auf Reddit )
Ein weiterer cooler Trick ist folgender: ( Credits für @ nobe4 )
*
cgn
NEWNAME wird <esc>
dann .
für andere Vorkommen wiederholt
cgn
ist "Ändern, was auch immer das Ergebnis ist (nächstes Vorkommen finden)". Jetzt, da dies der letzte Befehl ist , müssen Sie nicht n
mehr zum nächsten Vorkommen wechseln, also wieder weniger Striche und, was noch wichtiger ist, müssen Sie nicht abwechseln n
und .
. Aber offensichtlich hat dieser den Nachteil, dass es nicht möglich ist, ein Ereignis zu überspringen.
Hier sind einige Vorteile:
- Keine Zuordnung, kein .vimrc (oder init.vim), sodass Sie es in jeder VIM-Kopie verwenden können, auf die Sie stoßen (z. B. eine schnelle Aufgabe auf einem VPS oder dem Computer Ihres Freundes, bei der die Konfiguration von VIM auf Ihre Weise den Zweck von "schnell" zunichte macht. )
- Die Verwendung von
*
oder gn
zur Wortauswahl ist sehr schnell - nur ein Tastendruck (sagen wir mal 1,5)
- Verwenden Sie
*
oder stellen gn
Sie sicher, dass Sie keine Übereinstimmungen mit anderen Worten erhalten, genau wie dies der :%s/<C-R>//gc
Fall ist. Beats, die :%s/\<OLDNAME\>/NEWNAME/gc
von Hand tippen : Ich persönlich vergesse oft, die \<
Dinge zu verwenden, um Übereinstimmungen nur auf ganze Wörter zu beschränken.
- Wenn Sie den Bereich nicht verwenden, werden nur einige zusätzliche Striche ausgeführt
n
, um unerwünschte Übereinstimmungen zu überspringen - wahrscheinlich sogar weniger als die zusätzlichen Striche, die zum Einschränken des Bereichs erforderlich sind. Unter normalen Umständen sind Ihre Variablen höchstwahrscheinlich ohnehin etwas in einem bestimmten Codeblock lokalisiert.