Vimのマクロ — 記録、再生、編集
Vimマクロで繰り返しの編集を自動化。qでの記録、@での再生、Visual選択での実行、複雑な自動化ワークフローのためのマクロ編集を学ぶ。
Macros
詳細な説明
マクロの記録と再生
マクロでキーストロークのシーケンスを記録し、再生できます:
基本的なマクロワークフロー
q{a-z}— レジスタ{a-z}への記録を開始- 編集を実行
q— 記録を停止@{a-z}— マクロを再生
再生コマンド
| コマンド | アクション |
|---|---|
@{a-z} |
レジスタからマクロを再生 |
@@ |
最後に実行したマクロを再生 |
{n}@{a-z} |
マクロをn回再生 |
:'<,'>normal @{a-z} |
選択範囲の各行でマクロを実行 |
マクロ設計のヒント
堅牢なマクロを作るために、既知の位置から開始:
0または^で開始(行頭に移動)- 相対移動には
w、f、/を使用(lではなく) jで終了(次の行に移動)して連続行で動作するように
例:複数行にセミコロンを追加
qa— レジスタaへの記録を開始A;— 行末にセミコロンを追加Esc— Normalモードに戻るj— 次の行に移動q— 記録を停止99@a— 次の99行で実行(ファイル末尾で停止)
マクロの編集
マクロはレジスタに格納されるため、編集できます:
:let @a='とキーシーケンスを入力- またはレジスタの内容をバッファにペースト:
"ap— レジスタaをペースト- テキストを編集
"ayy— レジスタaに戻してヤンク
再帰マクロ
マクロは自身を呼び出して、エラーが停止するまで行を処理できます:
qaq— レジスタaをクリアqa— 記録を開始- 編集を実行 +
jで次の行に移動 @a— 自身を呼び出す(再帰)q— 記録を停止@a— 再帰マクロを開始
ユースケース
繰り返しの編集タスクがある場合 — 数十の類似行の再フォーマット、複数箇所へのボイラープレート追加、データの変換など — を自動化する必要がある場合。