← Vim道場

操作を記録して繰り返す

ドットコマンドは直前の「変更」1つを繰り返しますが、移動を含む一連の手順は繰り返せません。マクロはキー操作をまるごと記録して、何度でも再生できます。同じ形の行が何十行と並んでいるときの直しが、記録1回と再生の連打で終わります。

第6章 まとめて片づけるレッスン 23 / 24

記録は「レジスタ」に入る

qaa はレジスタの名前です。コピーで使うレジスタと同じ場所で、こちらにはキー操作の並びが文字列として入ります。だから a から z まで26本のマクロを持てます。

記録中はステータス行に表示が出ます。止めるときは q だけです(レジスタ名は要りません)。直前に再生したマクロは @@ でもう一度呼べます。

繰り返しやすい記録の書き方

マクロは記録したキーをそのまま再生するので、実行するたびに同じ結果になる操作で組み立てるのが要点です。行の先頭から始めて最後に j で次の行へ移る、という形にしておくと、何回再生しても同じ位置関係を保てます。

逆に、l を何回も押して位置を合わせるような記録は、行の長さが変わると壊れます。fciw のように内容を頼りに動くキーを使うほど、繰り返しに強いマクロになります。

ドットコマンドとの使い分け

変更1つを繰り返すだけなら . のほうが手軽です。移動を含む複数の操作をひとまとまりにしたいとき、あるいは同じ手順を何十回も繰り返したいときにマクロを使います。

失敗したら u で戻せます。ただし再生1回ごとに変更が積まれるので、10@a のあとで元に戻すには u を何度か押すことになります。

このレッスンで扱うキー

キー動き
qaレジスタ a に記録を開始
q記録を終了
@a記録した操作を再生
3@a3回まとめて再生

関連記事

レッスン一覧へ戻る