Ich möchte ein Makro ausführen, das ich gerade im Register " x
" in jeder einzelnen Zeile eines offenen Puffers von meinem Cursor bis zum Ende des Puffers in vim aufgezeichnet habe . Wie mache ich das?
Ich weiß, dass ich das Makro n-mal wiedergeben kann:
15@x
... oder einfach gedrückt halten, @
bis ich die letzte Zeile erreicht habe, aber ich möchte nur ein paar Tastenanschläge drücken und damit fertig sein.
Danke im Voraus.
Antworten:
Persönlich würde ich tun
Bearbeiten: Das Register wurde in das von Ihnen angegebene Register geändert.
quelle
Sie können (im Befehlsmodus)
quelle
rekursives Makro erstellen:
Ex:
Das erste Wort von der aktuellen Zeile bis zum Ende der Datei wird mit einem einzelnen @a UPCASE. Aber stellen Sie sicher, dass "ein Register leer ist:
quelle
%:normal
Ansatz, da er alle Linienbewegungen innerhalb des Makros berücksichtigt. Er ist daher nützlich, wenn die Linien in ihrer Form nicht identisch sind. Ich finde es einfacher, ein Makro 'a' zu erstellen, um die Aktion zu definieren, und dann das Makro 'b' das rekursive Bit ausführen zu lassen, dh qb @ a @ bq.ctrl-c
zu stoppen, wenn das passiert!:set nowrapscan
lässt es fehlschlagen und stoppt, wenn das Ende der Datei erreicht ist.qaq
vor dem Makro :qaqqa0gUwj@aq
. Wenn Sie außerdem vergessen, das@q
am Ende zu setzen, können Sie jederzeitqA
ein Register anhängen und dann tun@q
. Normalerweise nehme ich aus irgendeinem Grund auf, um q zu registrieren, weil es einfach ist (besonders für rekursive Makros) und normalerweiseqqqqqgUiwj@qq
anstelle von zwei Makros ausgeführt wird. Die ersten dreiq
s löschen reg q, die zweiten zweiq
s beginnen mit der Aufnahme. Siehe vim.wikia.com/wiki/Record_a_recursive_macroa
Register zu löschen, könnte man einfach tippenqaq
999999@x
, es sei denn, Sie haben einen sehr großen Puffer ...quelle
%:normal @x
oder1,$:normal @x
?99999@x
ist nur die natürliche Sache, die Sie sich einfallen lassen, wenn Sie es eilig haben :)Aus dem vim-Wiki, verkürzte Version: qqqqq zum Aufzeichnen des Makros @qq zum Beenden der Aufzeichnung von @q zum Ausführen (und wird bis zum Ende der Datei ausgeführt)
quelle