2009-08-18 6 views
63

マクロを実行したい私は、バッファからvimのバッファの終わりまでオープンバッファのすべての1行にレジスタ "x"を記録しました。それ、どうやったら出来るの?バッファの終わりまでvimマクロを再生する

私はマクロn回再生することができます知っている:

[email protected] 

を...またはちょうど私が最後の行に達するが、私はほんの数キーストロークを打つこととして行うことが必要になるまで@を押したままそれ。

ありがとうございます。

+0

15 @ XのWindowsのgvimで –

答えて

77

個人的に私は

VG:normal @x 

編集をするでしょう:1への登録を変更

+0

いいです。私はこのソリューションが選択された領域だけで動作するのが好きです。 – Kevin

+0

これをnnoremapにマップしました<[email protected]> VG:norm @ q PAS

5

[email protected]、あなたは非常に大きなバッファを持っていない限り...

+3

理由だけではなく、 '%を動作していない:通常の@ X 'または '1、$:normal @ x'? –

+3

これは間違いなくより洗練された解決策です - 私は '99999 @ x'があなたが急いでいるときに思い浮かぶ自然なものだと思っています:) – Peter

+1

9999999 @ xは最後の行であなたは正確に999999行ですか? –

17

は、再帰的なマクロを作る:

[email protected] 

例:

[email protected] 

それは現在の行から最初の単語をUPCASEます単一の@aを持つファイルの終わり。 しかし、レジスタが空である」ことを確認してください。

let @a="" 
+3

優れています。このアプローチは、マクロ内の行移動を尊重するので、 '%:normal'アプローチよりも有用です。行が同じ形式でない場合は便利です。マクロ 'a'を作成してアクションを定義し、マクロ 'b'に再帰ビット、つまりqb @ a @ bqを作成する方が簡単です。 –

+2

マクロが検索に関係する場合は避けてください。それが起これば停止する 'ctrl-c'! –

+2

@IainBallard、 ':set nowrapscan'は失敗し、ファイルの最後に到達すると停止します。 – ericbn

53

をあなたは(コマンドモードで)行うことができます

:%normal @x 
0

vim wikiから、短縮版: qqqqqは、それを実行するために @qの記録を終了するマクロ @qqを記録する(とファイルの終わりまで実行されます)

+1

ドキュメントへの参照を追加できますか? – aturegano

+1

@aturegano私は、著者が再帰的なマクロを使うことを意図していたと思います。詳細については、[Vim Wiki:再帰マクロの記録](http://vim.wikia.com/wiki/Record_a_recursive_macro)を参照してください。 – dylnmc

関連する問題