Emacsのキーボードマクロで単純作業解消

Emacsの魅力は、elispを書くことによって面度な作業を全て自動化することができることです。毎日やっている同じような作業は、elispでマイナーモード(もしくはメジャーモードを改造)を書いてしまえば、繰り返しの作業を省略することができます。

ただ、elispを書くほど毎日使わないけど、今行っている繰り返しの作業を省略したいというときは、キーボードマクロが非常に便利です。

Emacsのキーボードマクロ

キーボードマクロは、自分の入力したコマンドやキー入力を記憶して、マクロ呼び出し時に同じことを行ってくれる機能です。

キーボードマクロを利用するだけなら、elispを理解している必要はありません。プログラマでない方でも簡単にEmacsのキーボードマクロを利用することができます。ただ、解析処理などをと入れたキーボードマクロを作成する場合は、elispに手を加える必要が生じるかもしれません。

キーボードマクロの操作方法

最もシンプルにキーボードマクロを使う方法です。

  1. C-x ( でマクロ記録開始
  2. 任意のコマンドやキー操作を行う
  3. C-x ) でマクロ記録終了
  4. C-x e で最新のマクロを実行

上記の方法で、Emacsのキーボードマクロを扱うことができます。ただ、上記の操作方法だけでは、常には複数のマクロの同時に扱うことができません。状況に合わせてマクロ1、マクロ2を使い分けたい場合は、マクロをコマンドとして登録する必要があります。

マクロを登録、保存する

記録したマクロをコマンドとして登録するにはM-x name-last-kbd-macroを実行します。次に、コマンドの登録名を入力して完了します。

コマンドとして登録したマクロは、他のemacsのコマンドと同様に扱われるので、M-x コマンド名でマクロを実行することができます。ただし、コマンドに登録したマクロは現在のセッションのみ有効です。今後のEmacsへのセッションにも利用したい場合は、elispとして保存して、そのelispをコマンド登録する必要があります

キーボードマクロを保存するには、Emacsコマンド言語であるキーボードマクロをバッファにelispとして出力後保存します。保存したマクロを使用する場合は、load-fileでマクロの書かれたelispファイルを読みだすだけです。.emacsに記述しておけば、そのまま利用することができます。

キーボードマクロをelispとしてバッファに出力するコマンドは M-x insert-kbd-macroです。