読者です 読者をやめる 読者になる 読者になる

Emacsを使う上で気に留めておくべきこと


入門 GNU Emacs 第3版

入門 GNU Emacs 第3版


前々からちょびちょび読んでたんですが、実家で休養(実はほとんど療養だった)している間に
だいたい読み終わりました。


エディタの域を通り越して強力な作業環境にすらなり得てしまうEmacsですが、
その分、ある程度使えるようになるまでは時間がかかります。僕も初めてEmacsに触れたのは5年ほど前ですが、
当時はviと同じで全く馴染めず、サクラエディタやら秀丸やらいろいろなエディタを試していた時期もありましたし、
EclipseとかみたいなIDEを使っていた時期もありました。
ただ、いろいろな言語に触れる内に、使っているエディタやIDEがその言語をサポートしていなくて、
その度にプラグインを探してインストールしたり、ねぇんなら自分で書いてやると思ったのはいいけど、
ちょっとやそっとじゃできなさそうだということがわかり、めんどくさくなってわざわざ
それをサポートしているエディタを使ったりと、正直かなりしんどかったです。
まあ、実はこれが私がEmacsに移行した最大の理由なのですが、最近ではgdbLispPrologのコードのデバッグなんかも
全部Emacs上でやったりと、エディタ以外のこともやるようになって、もうEmacs以外のエディタに戻れない
かもしれないところまで来てたりします。あと、Linuxとかになると実質、Emacsやviからは逃げられないのですよ、これが。*1


本書はEmacsの基本的な動作から普段気にかけないようなところまでこと細かく解説しています。
普段エディタでやるようなことをEmacsではどのようにしてやるのか、それはどのコマンドなのか、
ほかのエディタにはないEmacs特有の用語など、Emacsの基本を骨の随まで理解できるようになっています。
ただ、Emacsの拡張の仕方についての解説は短いので、その辺は自分でコードを書くなり、
既にあるEmacsLispのコードを見て勉強した方がいいでしょう。


まあ、昔話とか書評はこれくらいにして、本題。

すべての動作は「M-x 関数名」で実行できる*2


Emacsではありとあらゆる動作を「M-x 関数名」で実行することができます。
例えば、カーソルを一文字進めるという動作も裏では関数(forward-char)が動いており、
「M-x forward-char」とタイプすると、カーソルが右に一文字進みます。
また、\C-fが気に入らないなら別のキーに割り当てることができます。
実際、僕は\C-bが(個人的には)押しにくくてしょうがないので、backward-charを\C-lに割り当てています。

(global-set-key "\C-l" 'backward-char)


このようにEmacsの一つ一つの(対話的な)動作には関数が割り当てられており、
それらを組み合わせて新しい動作を自分で定義することができます。(interactiveでない関数も定義できます)
それにこれらの関数は自分で上書きすることもできるのです。(あんまりやらない方がいいのかもしれませんが)
このようにありとあらゆる操作を自分でカスタマイズすることができるのがEmacsの最大の長所であり、短所でもあります。
あと個人的にやってる例としては言語毎にキーボードマクロを設定したりとかですかね。
ほかにも細かいところでいろいろやってたりしますが、多分私以外は使わないのでこれくらいにしておきます。

それから、実際にEmacsを自分で拡張する際は「やさしいEmacs‐Lisp講座」をリファレンスとして
手元に置いとくと幸せになれるかもしれません。

*1:viは設定ファイルの細かい変更をする時とかに使ってます

*2:実際には、(interactive)、つまり対話可能という宣言をしている関数のみ