Ich habe eine Datei mit ein paar Zeilen. Ich habe ein Makro aufgezeichnet, das eine Operation in einer einzelnen Zeile ausführt. Ich möchte dieses Makro in allen verbleibenden Zeilen der Datei wiederholen. Gibt es einen schnellen Weg, dies zu tun?
Ich habe Strg + Q ausprobiert, eine Reihe von Zeilen hervorgehoben und @@ gedrückt, aber das schien nicht den Trick zu tun.
vim
vim-macros
Jordan Parmer
quelle
quelle
Antworten:
Verwenden Sie den normalen Befehl im Ex-Modus, um das Makro in mehreren / allen Zeilen auszuführen:
Führen Sie das in Register a in den Zeilen 5 bis 10 gespeicherte Makro aus .
Führen Sie das in Register a in Zeile 5 gespeicherte Makro bis zum Ende der Datei aus.
Führen Sie das in Register a gespeicherte Makro in allen Zeilen aus.
Führen Sie den Makrospeicher in Register a in allen Zeilen aus, die dem Muster entsprechen .
Um das Makro auf visuell ausgewählten Linien auszuführen, drücken Sie V und j oder k, bis der gewünschte Bereich ausgewählt ist. Geben Sie dann
:norm! @a
Folgendes ein und beachten Sie, dass die folgende Eingabezeile angezeigt wird.Enter : Hilfe normal in vim, um mehr zu lesen.
quelle
:norm! @a
:
nach dem Hervorheben der Zeilen stattdessen die Ex-Eingabezeile gelesen,:'<,'>
zu der Sie dann den Rest dessen hinzufügen, was Kevin vorgeschlagen hat. Dadurch wird der letzte Befehl gelesen ::'<,'>norm! @a
.!
vermeidet, dass Benutzer Schlüssel neu zuordnen. Sie brauchen es vielleicht nicht, aber eine Antwort, die für alle funktioniert, erfordert es.Verwenden Sie global , um das Makro 'a' in allen Zeilen auszuführen, die 'Muster' enthalten.
Um Hilfe zu erhalten, überprüfen Sie :
:help global
.quelle
Sie können dies auch tun:
Im normalen Modus:
Beispielsweise:
Überträgt das Makro im Register q auf die nächsten 1000 Zeilen.
quelle
:%norm! @a
undvGG :norm! @a
j
Befehl enden muss , um zur nächsten Zeile zu gelangen, sonst wird es versuchen, es auf dieselbe Zeile anzuwenden.Es gibt auch ein Plugin namens RangeMacro, das genau das macht, was Sie wollen! Für alle, die den Namen nicht erraten können, was es tut: Es wiederholt ein aufgezeichnetes Makro für jede Zeile in einem bestimmten Bereich, egal ob durch visuelle Auswahl oder durch: 40,50 /: +10
Siehe http://www.vim.org/scripts/script.php?script_id=3271
quelle