emacsのキーボードマクロとバインディングまで

モチベーション

普段の開発にはVisualStudioを使っております。メインの開発環境がWindowsであり、特にデバッグが便利なのでこの環境で不自由は感じません。元々はよくUNIXも使っており、その主要なエディタの一つであるemacsにも愛着があります。特にキーボードマクロに関しては、VisualStudioのエディタでは再現できないと思っております(もしかしたら頑張ればできるのかもしれませんが)。

プログラムを書いており、後から関数の仕様変更を行ったとします。その場合、その関数をあちこちで使っていた場合、膨大な変更が必要になります。そんなとき、一箇所の変更を行うemacsのキーボードマクロを登録し、それを繰り返せば比較的簡単に片付けることができます。その流れについて、まとめておきます。

キーボードマクロの登録とその呼び出しについてまでであれば、あちこちに記事が見付かったのですが、それをキーバーインディングするところまではあまり見付かりませんでした。その備忘録も兼ねております。

キーボードマクロの記録

まずコントロールと同時に「x」を押すことを「C-x」、Escapeの後(昔はMetaキーがあり同時押しだったのですが)に「x」を押すことを「M-x」と表記します。

キーボードマクロの記録の開始は

C-x, (

で、終了は

C-x, )

です。この間に押したキーが記録されることになります。私がよく使う操作は

カーソルの移動と編集

  • 一行上…C-p
  • 一行下…C-n
  • 一文字右…C-f
  • 一文字左…C-b
  • 行頭…C-a
  • 行末…C-e
  • 一文字削除…C-d
  • Back Space…C-h

コピー&ペースト等(C-space、M-w、C-w、C-y)

  • マークセット…C-space(コピーや切り取りの始点指定)
  • コピー…M-w
  • 切り取り…C-w
  • 貼り付け…C-y
  • 行末まで切り取り…C-k

検索

  • インクリメンタルサーチ…C-s
  • 逆向きインクリメンタルサーチ…C-r

以上を使えば大半のものは編集可能と思います。こうして記録が終わったマクロは、「C-x, e」で何度でも呼び出すことができますし、「C-u, 回数, C-x, e」で繰り返し実行することもできます。ただ、いちいち「C-u…」と何度も入力するのが大変なので、ここでは一回の入力で実行できるようにしたいと思います。

キーボードマクロに名付け

M-x, name-last-kbd-macro, RET, "name", RET

でnameという名前を付けることができます。その後はM-x, “name”で呼び出すことができます。

キーボードマクロを出力

上で名前を付けたマクロ内容を出力するには

M-x insert-kbd-macro RET "name" RET

と入力します。すると

(fset 'name     [? .......]]

のようなものが出力されますので、それを適当な場所に保存しておきます。emacs起動時に読み込まれるホームディレクトリにある設定ファイルである「.emacs」(~/.emacs)あたりに書いておくと、次の起動時から自動的に読み込まれます。

キーボードマクロのキーバインディング

最後に、「.emacs」等の設定ファイルに

(global-set-key "\C-o" 'name)

と書いておきますと、「C-o」で記録したキーボードマクロを実行することができます。また「.emacs」に書いてemacsを起動し直す以外にも、適当なBufferにマクロの名付けと定義、それからキーバインディング(global-set-key)までを書いた後、その領域を選択して、

M-x, eval-region

でも同等の効果があります。

参考サイト

emacsの標準キーボードマクロ

キーボードマクロについて

今回の記事の内容についてカバーしているサイト

コメント

タイトルとURLをコピーしました