AtomからEmacsに乗り換えて気付いたEmacsの底力

2019-01-28T13:48:59+0900
Emacs

2019-01-28にビルドしたEmacs

2018年の年末にAtomからEmacsにスイッチしてしようと決めてから、年末年始を利用して快適にコードが編集できるようにEmacsを鍛えていました。

Atomは大変素晴しいコードエディタで、初心者がプログラムを書く上で、必要な機能が最初から備わっています。これはVSCodeも同様でしょう。まさに生まれながらのプログラミングエディタと言えます。

Emacsに復帰してあらためて思ったのは、Emacsは生まれながらのプログラミングエディタではないということです。Emacsの初期設定でプログラミングをするには、自動補完もなければGitの対応も不十分で、あまりにも機能が足りていません。

ですが、Emacsが他のエディタと比べて劣っているかと言えばそうではありません。

Emacsの最大利点は即時拡張性 #

僕が感じたEmacsがAtomやVSCodeと比べて優れている点は「即時拡張性」です。

Emacsはエディタとして操作している途中の、ありとあらゆるタイミングで設定の変更が可能です。つまり、コードを書いているときでも、キー操作、文字装飾、編集機能、表示項目、コマンドなど不満に感じた部分をリアルタイムで自分の手に馴染むように調整できます。

もちろん、AtomやVSCodeでもたいていの設定変更はできますが、そのためには設定画面を開いて、該当する項目があるかどうかを調べたり、ブラウザでAPIドキュメントを開いて調べる必要があるため、設定がそもそも変更可能なのかを調べるだけでも時間がかかります。

しかし、Emacsの場合は、M-x describe-function(C-h f)M-x describe-variable(C-h v)M-x apropos-command(C-h a)M-x customizeM-x find-libraryなどのコマンドから、関数、変数、用意されている設定(変数)、コマンド、ライブラリのソースコードを探索して 、すべての調査をEmacsの中のみで完結して行い、提供されているすべての設定が変更可能となります。

もちろん慣れもあるのですが、慣れた人にとってEmacsの設定を調べて変更するまでの速さは圧倒的なスピード感があります。

M-x customizeによる設定 #

今回設定に関しては、リハビリと実験をかねて新規で作り直した上で、できるだけM-x customizeによって自動生成される設定を利用して設定を行っています。

M-x customize

M-x customize(Easy Customization Interface)はEmacsに用意されている設定画面で、なんとなくGUIっぽい雰囲気でインタラクティブに設定を変更できる機能です。上部のサーチボックスに調べたい機能名を入力してエンターを押せば、設定を検索することができます(M-x customize-aproposでミニバッファから検索することも可能です)。

「theme」で検索した<em>Customize Apropos</em>

M-x customizeによる設定の利点は、設定値を入力して保存すれば自動的に設定内容がinit.elに書き出されることと、設定値の型が定義されているため、設定すべき値を間違いにくいという点です。

これまでのinit.elに直接設定を書く方式に慣れている人からすると、若干やぼったさはありますが慣れてくれば悪くない感じです。

Emacsと私の今後 #

とりあえず、現在開発中のプロジェクトとブログを快適に書けるようにすることを目標に設定をしてましたが、ようやく良い感じになってきました。

自分が快適にコードを書くために、久しぶりにElispパッケージを書いたりして楽しいEmacsライフを送っていますので、それらについては徐々に紹介していければと思います。

なお、自分が書いたEmacs実践入門を片手に設定していたのですが、自分で書いだけあって自分が欲しい設定が書いてあり大変便利でした。ちなみに、年末からKindle版が発売されていて、[改訂新版]Emacs実践入門 Gihyo Digital PublishingからEPUBを買うことも出来るので電子書籍で欲しい方はぜひ。