Vimのマクロ — 記録、再生、編集

Vimマクロで繰り返しの編集を自動化。qでの記録、@での再生、Visual選択での実行、複雑な自動化ワークフローのためのマクロ編集を学ぶ。

Macros

詳細な説明

マクロの記録と再生

マクロでキーストロークのシーケンスを記録し、再生できます:

基本的なマクロワークフロー

  1. q{a-z} — レジスタ{a-z}への記録を開始
  2. 編集を実行
  3. q — 記録を停止
  4. @{a-z} — マクロを再生

再生コマンド

コマンド アクション
@{a-z} レジスタからマクロを再生
@@ 最後に実行したマクロを再生
{n}@{a-z} マクロをn回再生
:'<,'>normal @{a-z} 選択範囲の各行でマクロを実行

マクロ設計のヒント

堅牢なマクロを作るために、既知の位置から開始:

  1. 0 または ^ で開始(行頭に移動)
  2. 相対移動には wf/ を使用(l ではなく)
  3. j で終了(次の行に移動)して連続行で動作するように

例:複数行にセミコロンを追加

  1. qa — レジスタaへの記録を開始
  2. A; — 行末にセミコロンを追加
  3. Esc — Normalモードに戻る
  4. j — 次の行に移動
  5. q — 記録を停止
  6. 99@a — 次の99行で実行(ファイル末尾で停止)

マクロの編集

マクロはレジスタに格納されるため、編集できます:

  1. :let @a=' とキーシーケンスを入力
  2. またはレジスタの内容をバッファにペースト:
    • "ap — レジスタaをペースト
    • テキストを編集
    • "ayy — レジスタaに戻してヤンク

再帰マクロ

マクロは自身を呼び出して、エラーが停止するまで行を処理できます:

  1. qaq — レジスタaをクリア
  2. qa — 記録を開始
  3. 編集を実行 + j で次の行に移動
  4. @a — 自身を呼び出す(再帰)
  5. q — 記録を停止
  6. @a — 再帰マクロを開始

ユースケース

繰り返しの編集タスクがある場合 — 数十の類似行の再フォーマット、複数箇所へのボイラープレート追加、データの変換など — を自動化する必要がある場合。

試してみる — Vim Cheat Sheet

フルツールを開く