全力で怠けたい

怠けるために全力を尽くしたいブログ。

Vim のキーボードマクロの記録と実行。

Vim のキーボードマクロが便利なのだがあまり使わないのでいざ使うときに「あれ、どうやってたっけ?」となるので Vim のキーボードマクロの基本的な記録、実行と閲覧方法をメモしておく。

キーボードマクロとは

テキストエディターの多くは入力した文字を保存しておいて保存しておいた文字を後から実行する機能があり、一般的にキーボードマクロとかキーボードレコーダーとか呼ばれることが多い。 この機能は Vim にも備わっていて、うまく使うと単調な繰り返し作業などを非常に効率よく処理することができる。

ちなみに Vim の同機能は記録と実行を合わせて complex repeats というようだ。詳しくは help q を参照。

キーボードマクロの記録

ノーマルモードq とタイプして続いてキーボードマクロの記録先のレジスターをタイプする。 キーボードマクロの記録先のレジスターは [0-9a-zA-Z"] から選べるので、たとえばキーボードマクロをレジスタa に記録するなら qa とタイプする。

キーボードマクロの記録が開始するとステータス行に recording @a のように表示されるので、実際の操作をしていく。

記録したい操作が終わったらノーマルモードに戻ってもう一度 q をタイプする。 するとステータス行の recording @a が消えてキーボードマクロの記録が終了したことが分かる。

キーボードマクロの実行

ノーマルモード@ とタイプして続けて実行したいキーボードマクロの記録先のレジスターをタイプする。 たとえばレジスタa に記録しておいたキーボードマクロを実行するときは @a とタイプする。 @ は他のコマンドと同じように実行回数を指定できるので、たとえば 10@a のようにタイプするとレジスタa に記録しておいたキーボードマクロを10回実行することができる。

キーボードマクロの閲覧

ノーマルモードreg とタイプするとレジスターに記録されているキーボードマクロが閲覧できる。

キーボードマクロの例

4の倍数のときだけアホになるキーボードマクロ。 数値が1行ごとに書かれているので qa でキーボードマクロの記録を開始して 4j0cwstupid!<esc> をタイプして q で記録を終了して、 10@a で記録しておいたキーボードマクロを実行している。

それぞれのコマンドは以下を参照。

  • 4j: カーソルを4行下に移動
  • 0: カーソルを行頭に移動
  • cw: 単語を削除してインサートモードを開始
  • stupid!: インサートモードで単純にタイプ
  • <esc>: ESC キーをタイプの意味。インサートモードを終了してノーマルモードへ戻る。

f:id:ebc_2in2crc:20190915221043g:plain