← Vim道場
操作を記録して繰り返す
ドットコマンドは直前の「変更」1つを繰り返しますが、移動を含む一連の手順は繰り返せません。マクロはキー操作をまるごと記録して、何度でも再生できます。同じ形の行が何十行と並んでいるときの直しが、記録1回と再生の連打で終わります。
第6章 まとめて片づけるレッスン 23 / 24
記録は「レジスタ」に入る
qa の a はレジスタの名前です。コピーで使うレジスタと同じ場所で、こちらにはキー操作の並びが文字列として入ります。だから a から z まで26本のマクロを持てます。
記録中はステータス行に表示が出ます。止めるときは q だけです(レジスタ名は要りません)。直前に再生したマクロは @@ でもう一度呼べます。
繰り返しやすい記録の書き方
マクロは記録したキーをそのまま再生するので、実行するたびに同じ結果になる操作で組み立てるのが要点です。行の先頭から始めて最後に j で次の行へ移る、という形にしておくと、何回再生しても同じ位置関係を保てます。
逆に、l を何回も押して位置を合わせるような記録は、行の長さが変わると壊れます。f や ciw のように内容を頼りに動くキーを使うほど、繰り返しに強いマクロになります。
ドットコマンドとの使い分け
変更1つを繰り返すだけなら . のほうが手軽です。移動を含む複数の操作をひとまとまりにしたいとき、あるいは同じ手順を何十回も繰り返したいときにマクロを使います。
失敗したら u で戻せます。ただし再生1回ごとに変更が積まれるので、10@a のあとで元に戻すには u を何度か押すことになります。
このレッスンで扱うキー
| キー | 動き |
|---|---|
| qa | レジスタ a に記録を開始 |
| q | 記録を終了 |
| @a | 記録した操作を再生 |
| 3@a | 3回まとめて再生 |