第 7 章:Vim のマクロ
マクロはノーマルモードの一連の操作をレジスタへ記録し、必要な回数だけ再生します。 各行で同じ操作を行い、矩形編集では扱いにくい作業に向いています。
前章の配列変換を、今度はマクロで行います。
/^Mercury$を検索し、qaでレジスタaへの記録を開始します。続けてI' Esc A ', Esc j qと操作してください。空白は手順の区切りです。@@で 次の行を処理し、3@aで残りの 3 行を処理します。
javascript
var myArray = [
Mercury
Venus
Earth
Mars
Jupiter
];各項目が 'Mercury', の形になり、カーソルが ]; の行にあれば成功です。
操作を分解すると次のようになります。
qで記録開始、aでレジスタを指定。通常 a-z を使用I' Esc A ', Esc jで行の両端に文字を追加し、次の行へ移動- 2 回目の
qで記録を終了 @aでマクロを実行し、@@で最後のマクロを再実行。前の数値で繰り返す
壊れにくいマクロを作る
- まず 1 行を手動で処理して確認し、取り消してから記録する
- 最後に次の対象へ移動し、繰り返しがつながるようにする
- 固定列ではなく
0、$、f<X>、テキストオブジェクトなど相対的な操作を使う - 最初は
@aで 1 回だけ試し、その後<N>@aでまとめて実行する - 大きすぎる回数を指定すると後続の内容まで編集するため、対象数を確認する
:reg a で記録したキーを確認できます。マクロはレジスタに保存されたテキストであり、 そのため記録開始時にレジスタを指定します。
:reg aを実行し、レジスタaの文字から記録した操作を読み取ってみましょう。 最初からやり直す場合はuで原文まで戻し、先頭項目から記録し直します。
これで基本操作はそろいました。次の章から、テキストオブジェクト、レジスタ、マークと ジャンプ、複数ファイルの操作を学びます。
次の章ではテキストオブジェクトを紹介します。