Emacsの始め方

これは、僕がいかにEmacsを覚えたか書いています。

この投稿の理由

  • 普及のため

Emacsは素晴らしいエディタで、これを超えるエディタはないと思うので、その普及のために書きます。

  • 食わず嫌いの人のため

会社にて、あまりにもEmacsVimにいきたいといいつつ、ずぅーっとEclipseを使い続ける人(EmacsVimを覚えられない人)がいたので。

はじめの一歩

Emacsを覚えるのに、何年もかけるなど、ありえない話です。
しかし、実際そういう方はいて、正直、結構時間を無駄にしています。
そこで、Emacsを3ヶ月ほどで殆ど不自由なく使えるようになった僕の経験から、僭越ながら、Emacsのスタートアップについて書きます。

最初にできれば、やりたいこと

最初に絶対にやってほしいことの前に、できたらやったほうがいいことを書きます。
それは、Windowsを卒業することです。

これはいたって真面目な話です。

Emacsには、Windows移植版もあり、Meadow3など強力な環境がありますが、正直、これはあまりおすすめできません。

Meadow3が、僭越ながらおすすめできない理由はたくさんありますが、その理由の一つは、圧倒的に動作速度が遅いことです。
Meadowシリーズはたくさんのすごい拡張がなされているのですが、正直、切り捨てることで格段に速度があがる拡張も自動で実装されてしまっているので、ファイルを開くという簡単な動作に、Emacsの処理を待つことになることがあります。
これがEmacsだと思ってしまうのは、あまりに損です。
なので、おすすめできません。

なので、できるだけ、他のOSに移行しましょう。
おすすめは、Macに移行することです。
理由は後述します。

それをふまえて、次は、最初に必ずやらなければならないこと、です。

最初に必ずやること

これができない為に、習得に思いっきり時間がかかることになります。
それは、
『他のエディタを忘れること』
です。
秀丸とか、K2Editorとか、EclipseとかNetBeansとか、忘れる事です。

僕の職場のいつまでもVimを習得できない人は、いつまでもEclipseと併用して使っています。
だから、Vimでできることの90%も知りません。Vimを、只のコンソールの延長だと思っています。
Emacsでも同じです。
他のエディタで可能なことは、ほとんど、Emacsでも可能です。
僕の知る限り、Eclipseで出来ることで、Emacsで出来ないことは、『別に出来なくても問題ないこと』です。正直。

例えばEclipseのインテリセンスですが、Emacsのauto-complete.elの方が便利です。インテリセンスではオムニ補完が使えますが、正直、オムニ補完がないとプログラミング出来ないのは、Javaくらいではないかと思います。

あと、Emacsでもありますが、ディレクトリを横でツリー状で出しておく機能ですが、あれも正直要りません。あれに頼り切ると、ディレクトリ構造を自分で把握しないので、いつまでたっても、ディレクトリツリーを開く作業に時間をとられます。

一日何時間ディレクトリツリーと遊んでいるのかわからないほど、意味のない作業に従事することになります。

僕もPHPエディターやNotepad++を使ってきましたが、会社を変わった時に、覚悟を決めて、OSをMac OS X に変え、Emacsにしました。

僕が使い始めたのはXEmacsと言う種類で、サーバーに設置するものではありません。
サーバーには、trampという機能でアクセスします。

始めの壁

僕も正直、Emacsを使い始める前は、
Emacsなんて古くさい技術を使わなくてもいい。僕の欲しい機能はきっとない』
と思っていましたし、例に漏れず、始めたら、閉じ方もわかりませんでした。

しかし、もう覚悟を決めたので、他のエディタの事は忘れました。
ここで、他のエディタと混同してはいけません。
同時に使うのもダメです。

それでは覚えられません。

まず始めの壁は、元々使っていたエディタと同じレベルの作業を、Emacsで出来るようになることです。

これは重要です。

しかし、前に使っていたのがEclipseNetBeansだった場合、ちょっとこの道が遠くなります。

僕はこの作業と、キーバインドがだいたいわかるようになるまで、約一ヶ月かかりました。

そこで、この作業に僕が知ったEmacsの機能を羅列します。

  • Dired

Emacsには、ディレクトリやファイルの一覧を取得する機能があります。
C-x C-d でディレクトリの一覧が出ます。これをDiredといいます。
Dired上のディレクトリで[i]を押すことによって、ディレクトリを内部に開くことが出来ます。これによって、無駄にウィンドウが増えません。

  • Tramp

Trampという機能で、サーバー上にあるファイル一覧を閲覧、変更することが出来ます。
これには、普通にDiredを使うときに、/ssh:hogehoge@hogehoge.com#22:~/
のように使用します。#の次に記述するのは、ポート番号です。
Trampの機能は、昨今のEmacsには標準で入っています。

  • Auto-complete

他のエディタで言う、自動補完です。
auto-complete.elはEmacsの補完機能の決定版であり、この機能で、Emacsの利便性は圧倒的になりました。
辞書を設定できるほか、一度記述した言葉、開いたファイルで記述されている言葉、を全て拾ってきて、補完してくれます。

  • Anything

他のエディタでは、実現されていない、統一インターフェース管理です。
これまでのコピペ、開いたファイル、今開いているファイルなどを統一的に検索する、全てを取りまとめる拡張です。この機能で、Emacsの様々な機能が統一的に扱えるようになりました。

最新にして、決定版的スニペット機能です。
スニペット内部でlispを動かすことが出来たり、入力をミラーリングして同じ記述を二度する必要がなかったり、簡単に独自スニペットを追加することが出来ます。これのおかげで、Emacsは他のMacテキストエディタ以上のスニペット機能を持ちます。

上記の機能を全て実装すれば、おそらく他の殆どのエディタの機能を凌駕します。
加えて僕は、今カーソルがある単語を即時にハイライトするインスタンスな検索機能が欲しかったのですが、これも拡張があります。
自分は、他の人が書いていたlispを参考に実装しました。
このように、『なければ最悪、自分で実装すればいい』のはEmacs最大の強みです。

インストール

前置きが長くなりましたが、早速インストール編です。
Emacsをインストールするときに気をつけるべきなのは、日本語入力の対応です。Mac OS X 版だと、殆どの場合対応済みですが、Windows版などだと、インストールしたけど日本語が打てなかった、日本語がインライン入力できなかった、などがあります。

Mac OS X の場合、Carbon Emacsという、既に日本語が打てるようにまとめられているバイナリがあります。
これは、ダウンロードしてアプリケーションフォルダにコピーすれば、そのまま使えるというもので、既にコンパイル済みです。
自分でコンパイルするのも、そんなに難しくありません。
その際には、最新版の23.3をおすすめします。
Xcodeをインストールして、
./configure --with-ns --without-x
make
make install
です。nextstepフォルダにバイナリが作成されます。

Carbon Emacs
http://homepage.mac.com/zenitani/emacs-j.html

Cocoa Emacs 23.3
http://ftp.gnu.org/pub/gnu/emacs/

カスタマイズ編

では次に、カスタマイズをしてみます。
おそらくWindowsでずっとやってきた方は、そもそも設定ファイルがどこにあるのかわからないはずです。
僕は本当にへなちょこプログラマなので、
~/.emacs
の、~/ ってどこにあるの?という感じでした。
~/の[~]は、省略ではありません。自分のユーザー領域のことです。
これはOSによって場所が変わりますが、Macの場合、
Users/名前/
です。
ここに、.emacsファイルを作成します。
この中に、elispで、設定を書いていきます。

おそらく、Emacsを始めてから納得したものが出来るまでしばらくの時間は、.emacsファイルと、Google先生と共に格闘することになります。

僕の設定例については、以下で紹介しています。

http://www.croisforce.com/archives/1066

拡張編

しばらくすると、自分で拡張を書きたくなってきます。
正直、今は殆どのメジャーモードは出きっているので、自分で追加するといっても、サンプルは大量にあります。
まずは、自分の理想に近いelispを拾ってきて、読むことも重要です。
また、elispの良い勉強本もあります。

Emacs Lispプログラミング入門

Emacs Lispプログラミング入門

この本は非常に良かったです。
他に、rubikichiさんが出している本も非常にいいです。

Emacsテクニックバイブル ?作業効率をカイゼンする200の技?

Emacsテクニックバイブル ?作業効率をカイゼンする200の技?

こうしてelispをものにすれば、楽しいEmacsライフが始まります。
正直、Emacsの前にはどういう風にプログラミングを楽しんでいたのかわからないほど、僕は強烈にEmacsのファンです。

ファンが一人でも増えることを願って、投稿しておきます。