Skip to content

第 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 で原文まで戻し、先頭項目から記録し直します。


これで基本操作はそろいました。次の章から、テキストオブジェクト、レジスタ、マークと ジャンプ、複数ファイルの操作を学びます。

次の章ではテキストオブジェクトを紹介します。