モチベーション
普段の開発には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の標準キーボードマクロ
キーボードマクロについて
今回の記事の内容についてカバーしているサイト
コメント