Ich möchte einen Befehl schreiben, der "das Wort unter dem Cursor" in VIM angibt. Nehmen wir zum Beispiel an, ich habe den Cursor auf ein Wort und lasse es zweimal erscheinen. Wenn das Wort beispielsweise "abc" lautet und ich "abcabc" möchte, könnte ich Folgendes eingeben:
:s/\(abc\)/\1\1/
Aber dann möchte ich den Cursor auf "def" bewegen und mit demselben Befehl in "defdef" ändern können:
:s/\(def\)/\1\1/
Wie kann ich den Befehl in die Befehlszeile schreiben, damit er dies tut?
:s/\(*whatever is under the commandline*\)/\1\1
quelle
yiw
überbyw
nur wegen Muskelgedächtnis. In dem Szenario, in dem sich Ihr Cursor bereits auf dem ersten Zeichen im Wort befindet, müssen Sie das weglassenb
und einfachyw
vs eingeben, damit Sie das in weglassen können . Unfälle können passieren, und dasi
yiw
Im Befehlszeilenmodus fügt CTRL+ R CTRL+ Wdas Wort unter den Cursor ein.
In der Hilfe finden Sie
c_CTRL-R
eine Liste aller anderen Sonderregister:quelle
yiw
: Ziehen Sie das innere Wort (das Wort unter dem Cursor). Dieser Befehl bewegt den Cursor auch an den Wortanfang.P
: Vor dem Cursor einfügen.Sie können dann das eg:
< ALT > - D
diesem Befehl zuordnen:quelle
Eine andere einfache Möglichkeit, dies zu tun, ist die Verwendung des
*
Befehls.Geben Sie im regulären Modus über ein Wort ein
*
macht das Suchmuster zum aktuellen Wort (zB \ <abc \>).:s//
Ersetzt das aktuelle Suchmuster und\0
im Ersetzungsabschnitt befindet sich die übereinstimmende Zeichenfolge.Sie können dieses Verhalten dann wiederholen, z. B. über das Wort "def", indem Sie es entweder erneut eingeben oder eingeben
@:
Wiederholt einfach den letzten ex-Befehl, ohne dass eine <Eingabe> erforderlich ist, in diesem Fall die Ersetzung.Mit dem
q
Befehl können Sie auch ein schnelles Makro aufzeichnenWiederholen Sie es dann nach Herzenslust, indem Sie tippen
wenn über ein Wort, das Sie verdoppeln möchten. Da dies nur ein Zeichen weniger als die vorherige Lösung ist, lohnt es sich möglicherweise nicht für Sie - es sei denn, Sie führen zwischen der Wortverdopplung andere Ex-Befehle aus, die das Verhalten von ändern würden
@:
quelle
Sie müssen die Backslashes innerhalb des Mappings umgehen. Sie können auch die Ersetzungszeichenfolge in die Zuordnung aufnehmen.
quelle
wird tun, was Sie beschreiben.
Bewegt den Cursor auch zum nächsten Wort.
quelle
@ user11211 bietet die einfachste Möglichkeit , das Wort unter dem Cursor zu duplizieren:
Ziehen Sie das innere Wort (bewegt den Cursor zum Wortanfang), fügen Sie es ein (vor dem Cursor).
z.B. geradeaus [t] vorwärts ----> geradeaus [d] unkompliziert
[] ist der Cursor
Ausarbeiten ...
Sie möchten wahrscheinlich, dass der Cursor Ihrem duplizierten Wort folgt:
geradeaus [t] vorwärts ----> unkompliziert geradeaus []
HINWEIS:
ist ein inneres Wort (ohne Leerzeichen)
ist alles Wort ziehen (einschließlich nachgestellten Leerzeichen).
ist daher ein doppeltes Wort, einschließlich Leerzeichen und Positionscursor.
geradeaus [t] vorwärts ----> unkompliziert unkompliziert []
quelle
quelle
n
Flag des:substitute
Befehls, um auszudrucken, wie oft das Wort unter dem Cursor im aktuellen Puffer erscheint. Ziemlich klug, aber eigentlich keine Antwort auf diese Frage.