Ich verwende oft extrem lange Makros, wenn ich mich mit wiederholten Bearbeitungen und Umgestaltungen befasse. Wann immer möglich, schreibe ich diese als Ex-Modus-Befehle, anstatt sie als Makros aufzuzeichnen, da sie auf diese Weise (mit dem Befehlsfenster) einfacher interaktiv bearbeitet werden können.
Manchmal muss ich jedoch ein paar Befehle im normalen Modus hinzufügen, z. B. um nur einen Teil einer Zeile und nicht eine ganze Zeile für die spätere Verwendung in meinem Makro zu ziehen oder um Text so auszurichten, wie ich es möchte.
Gibt es eine Möglichkeit, einen Befehl im Ex-Modus fortzusetzen, nachdem er norm
enthalten ist?
(Für ein aktuelles Beispiel der Art von Komplexität, von der ich spreche :)
:'a+s/\_^\s*\(\S*\)::\_[^>]*>\s*\("[^"]*"\)\s*;\_s*\_$/ "\1", \2,/ | m 'a- | norm f,50a ^[d44|
Gibt es eine Möglichkeit, am Ende mehr Text hinzuzufügen und als Ex-Modus-Befehl ausführen zu lassen?
:execute
Übergibt die Zeichenfolge nur als Argument an :normal
, sodass letztere nicht sieht, was in der Befehlszeile folgt, sodass Sie weitere Ex-Befehle hinzufügen können. Es gibt nur eine Sache , die man beachten muss, wenn die Zeichenfolge wie nicht wörtliche Steuerzeichen enthält \e
für <Esc>
Sie doppelte Anführungszeichen verwenden Vim zu ermöglichen , sie zu interpretieren, sonst Apostrophe die Interpretation von irgendetwas in der Zeichenfolge zu verhindern.
:normal
Befehl den Rest der Zeile belegt? Wenn ja, können Sie es in eine Zeichenfolge einschließen, die Sie mit dem folgenden:execute
Befehl ausführen können ::exe 'norm f,50a ^[d44|' | other Ex command
.