web-dev-qa-db-ja.com

Vimマーカーとマクロ

マクロをマーカーまで動作させる方法はありますか?私がするかどうか知っています5@a私のマクロは5行で動作します。例:

set marker with `mc`
record a macro with `qa`
... now what?

明らかに'c@aカーソルをcのマーカーに移動するだけです。バッファを試しました、"b'c、しかしそれはただマーカーに行きます。私はおそらく非常に基本的なものが欠けているか、間違った場所を探しているだけです。

2
zje

あなたはこれを試すかもしれません:

:.,'c normal @a

これは、 "ranged" :normal command を使用して、現在の行から下に向かって各行の最初の列にカーソルを連続して配置して、通常モードのコマンド@aを実行します。マークcのある行に移動します。マークがカーソルの上にある場合、Vimは、 範囲を逆にする にするかどうかを尋ねます。

レジスタaの内容はそうではない可能性があるため、これは@a(例:5@a)にカウントを適用することと常に同じではありません。実行されるたびに常に1行下に移動します(jまたはkの代わりに検索を使用して移動する「マクロ」を検討してください。行を完全に処理するには、より多くのカウントが必要になります。複数の一致があります)。

2
Chris Johnsen

1つの解決策は、現在の選択を想定して操作するようにマクロを設定し、実行する前に操作するファイルの部分を選択することです。

0
Caleb