最近知った Vim の小技。マクロに記録したコマンドをペーストする方法を紹介する。たとえば現在の行をコピーして2回ペーストするコマンドをマクロに記録した場合 (qa
→ yypp
→ q
)、レジスタの中身は以下のようになる。
:reg a
Type Name Content
c "a yypp
この yypp
を、以下のコマンドを入力することによりペーストすることができる。
"ap
これが何をしているかはヘルプに記載されている通り。
“{register} 続く操作 (削除、コピー、貼り付け) に {register} を使う。
つまり今回は「貼り付け」という操作にレジスタ a
を使っているということになる。マクロの話というよりはレジスタの話。
コピーもできると書いてあるので、たとえばペーストは2回じゃなくて1回でよかった、という場合は "ap
によりコマンド yypp
をペースト後、末尾の p
を削除したうえで行頭に戻り以下のコマンドを入力することでレジスタ a
、つまりマクロを上書きすることもできる。
"ay$
もう少し調べていたら、レジスタの内容をペーストする別の方法を見つけたのでそちらもご紹介。インサートモードに入って CTRL-R
を入力後にレジスタ名を入力する。今回の場合であれば CTRL-R
→ a
と入力。こっちのほうが打ちやすい気がする。ヘルプはこちら。
また、レジスタの中身の書き換えも別の方法があった。コマンドラインモードで以下のコマンドを実行することでレジスタ a
の中身を書き換えることができる。ヘルプはこちら。
:let @a = yyp
なにやらとりとめのない感じになってしまったが、今回は以上。