ざる魂

真似ぶ魂、学ぶの本質。知られざる我が魂

第3のエディタEvilのすすめ

Evil Advent Calendar 2014 の8日目の記事になります。 Evil の使用人口が少なすぎるのでEvilを使う理由などを述べて人口が増えるのを目論みます。 Evilを薦めてるのかEmacsを薦めてるのかよくわからないまとまりのない記事になってしまいました。

EmacsとVim

そこそこ経験のあるEmacserは大抵、viの操作もマスターしています。 Emacsがインストールされてない環境も多いのでそんなときはviを使ってささっと編集するのです。 hjklはもちろん、yy,dd,u,cw,yw,dw,もマスターしている人も多いのではないでしょうか? 自分はそのたびに感じていました。

「ああ、viはなんて編集が楽なんだろ。指が全然痛くならねぇ。」

Emacsのカーソル移動「 C-p, C-n, C-f, C-b 」は、言葉の意味に関連付けているので覚えやすいです。 だから一見viに比べるととっつきやすんです。でも疲れるんですよ。指が圧倒的に!

これには理由があってホームポジションで状態を持たずに沢山の操作を実現するには 修飾キーや2段ストロークキーを使うしかないのです。 なので、ほぼほぼ全ての動作に小指コントーロールがつきまといます。

それに比べてviはどうでしょうか? まずホームポジションから指を一切動かさずに右手だけでカーソル移動できます。 文字的には意味のないhjklですが、指の配置的には理にかなっています。 モードがあるおかげで修飾キーを使わずともいろいろと操作できます。 そして一番好きなのは

{count}{operater}{motion}

というシンプルだけど覚えやすいコマンド体系。 viを使うたびに私は思っていました。

「viはなんて操作しやすいのだろう」

と。

それでもEmacsを選ぶ理由

「そんなにviを賛美してEmacsをDisるんならとっととVimmerになれや」との声が聞こえてきそうですが、 Vimへ宗旨替えしようと思ってもできない自分がいるのです。

その最大の理由は「Lisp」。「ハッカーと画家」を読んだ方ならわかると思いますが「Lisp」は魅力的です。 プログラマならみんな憧れがあるのではないでしょうか? LispプログラマにはEmacserが多いですし1、Lispの開発環境といえばEmacsのSLIMEが定番です。 なのでEmacsから離れたくないのです。

最近のVimは昔に比べてEmacsのような環境化が進んでいますし、 拡張がしやすいという理由でEmacsを選ぶ理由は薄いかもしれません。 ただしLispを勉強したいというなら別です。CommonLispにしろSchemeにしろCLojureにしろ、 やはりEmacsが一番サポートが厚い気がします。 なによりEmacs自身がLispで書かれているのでEmacsを選ぶイコール毎日Lispと戯れることになるのです。

以上のような理由でviのコマンド体系でLispで拡張できるエディタがあったらなぁと思っていたのでした。

1「ハッカーと画家」の作者は「vi」な人らしいです(Vimではないっぽいところが重要)。

Evilとは、Vimの操作性を備えたelisp実行環境である。

そんな時Evilに出会ったのです。EmacsなのにVim。「俺の求めていたのはこれだー」と思いました。 なんせEmacsLispで書かれたVimなので「Lispで拡張できる最高やん」と思ったのです。 EvilはEmacsでもあるのでもちろんEmacsの沢山の魅力的な拡張がそのまま動かせます。

org-mode
これがないと生きていけない
dired
同じく!
anything,helm
ライフチェンジング!これなしでは(ry
auto-complate
いまどきのIDEぽく
eshell
Editor上でShellを動かす快適さ、シェル上でS式評価できる便利さ!
gnus
メールが読めちゃうよ!
skk
Emacsとの相性バツグンIME!
navi2ch
これで仕事中2chしててもばれない
twittering-mode
これで仕事中Twitterしてても(ry
magit
ベンリング!
slime
CommonLisp 最高の開発環境!
cider
Clojureといったらこれ!

こんなにあります(自分がよく使う拡張を挙げてみました)。 他にもはじめからEvil用に書かれたプラグインもあったりして 積極的にVimの機能がEvilに 移植 されています。

Emacsの豊富な資産を継承しつつも、Vimの操作性を高い再現度で手にいれることができる、それがEvilなのです。 EmcasLispという実行環境の上にEmacsLispで書かれたVimを模倣したエディタが動く。 もうこれは、EmacsでもVim でもなく第3のエディタとっいってもいいのではないでしょうか?

Evil-modeでVimの操作性とEmacsの拡張性を両方手に入れる!

Evilの魅力をちょっとまとめてみます。

  • Evilは、vimの基本的な操作は大体通用する。
  • Evil(vim)は、(達人になれば)呪文をとなえるように編集ができる。それが気持ちよさにつながる。
  • Evil(vim)は、小指への負担が少ない(重要)。
  • Evilは、EmacsだからEditorなのに画像が表示できる。その気になれば 3Dゲーム もつくれるぜ!
  • Evilは、日本語編集にも強いVimとして使用できる。

    • skkが簡単に使える。
    • ちょっと工夫すれば、モード間のskkの状態遷移がスムーズにできる。よって日本語入力がVimなのに快適!
  • Evilとは、Vimの効率的なテキスト編集能力と、lisp子孫の機能拡張言語を備えた第3のエディタである。

    • EmacslispはまがりなりにもLispの子孫。言語自体にパワーある。

迷ったらEvil(Emacs)。

EmacsとVimどちらを使えばいいのか迷っている場合、私はEmacsを進めます。 Emacs使いは、結局必要に迫られてviを操作することが多いです。 それに比べてvi使いがEmacsの操作もできることは少ない気がします。 viやvimの人がわざわざEmacsを操作する機会がないからですね。 であれば、Emacserのほうが両方の操作を覚えられるという点でお得です(面倒と考えずポジティブにいきましょう)。 Evilは、VimとEmacs両方の操作能力を求められので、EmacsもVimも全く知らない人がいきなりEvilから始めるのは あまりお勧めできません。ある程度両方の操作をマスターしてからのほうがいいでしょう。 そしてその順序は上述のとおりEmacsからのほうが良いと思います。

最後に

どうでしょうか?ちょっとはEvilに興味を持っていただけたしょうか? 面倒くさそうだなって思う人のほうが多そうな気もすごくするのですが、 少しでも試してみようと思うかたが増えたら幸いです(この記事自体、既にEvilを使ってる人しか読まなそうでけどね)。

Evilを使う気になった人へのちょっとしたメモ

EmacsとVimはコマンド体系が喧嘩しまくる感じです。なのでちょっとした基本は最初に知っておいたほうがいいです。 とりあえずすぐに思いついたものだけ。

Emacserじゃない人向け

  • C-g は Vim の ESC みたいなもの。困ったらこれを連打。
  • C-c は メジャーモードのプリフィックス。そのメジャーモードで何かするときは C-c してからコマンドを続けることが多い。
  • C-c C-c は何かを実行とか決定するときによく使う。
  • C-u は、反対の意味的なプリフィックス。普段使ってるコマンドを C-u を使って実行するとオルタナティブなコマンドになる。

Emacser向け

  • 迷ったら C-z これでEmacsキーバインドになる。