レジスター " x
"に記録したばかりのマクロを、カーソルからバッファーの終わりまで、開いているバッファーのすべての行でvimで実行したいと思います。それ、どうやったら出来るの?
マクロをn回再生できることはわかっています。
15@x
...または@
、最後の行に到達するまで押し続けますが、いくつかのキーストロークを押してそれで完了したいと思います。
前もって感謝します。
回答:
再帰マクロを作成します。
qa@aq
例:
qa0gUwj@aq
現在の行からファイルの終わりまでの最初の単語を単一の@aでUPCASEします。ただし、「レジスタが空であることを確認してください。
let @a=""
%:normal
、マクロ内の行の動きを尊重するため、このアプローチよりも便利です。したがって、行の形式が同じでない場合に役立ちます。アクションを定義するマクロ「a」を作成してから、マクロ「b」に再帰ビット、つまりqb @ a @bqを実行させる方が簡単だと思います。
ctrl-c
それが起こったら停止する!
:set nowrapscan
は、ファイルの終わりに達すると失敗して停止します。
qaq
には、マクロの前に実行しますqaqqa0gUwj@aq
。さらに、@q
最後にを付けるのを忘れた場合は、いつでもqA
レジスタの追加を開始してから、を実行できます@q
。私は通常、何らかの理由でreg qに記録しqqqqqgUiwj@qq
ます。これは、簡単で(特に再帰マクロの場合)、通常は2つのマクロの代わりに実行するためです。最初の3q
秒はregqをクリアし、次の2q
秒は記録を開始します。vim.wikia.com/wiki/Record_a_recursive_macro
a
、単純なタイプでしレジスタ1qaq
999999@x
、非常に大きなバッファがない限り...
%:normal @x
ないの1,$:normal @x
ですか?
99999@x
はあなたが急いでいるときにあなたが思いつくのは自然なことだと思います:)
vim wikiから、短縮バージョン:マクロ@qqを記録するqqqqqは、実行する@qの記録を終了します(ファイルの最後まで実行されます)