かなりすごいブログ

VimとEmacsと私

VimAdventCalendar 2012 235日目

VimAdventCalendar 2012 235日目の記事になります。昨日234日目は@unmoremasterさんの「Vim と俺と、それからトウモロコシ畑」でした。unmoreさんとは先日一緒にモバマスカフェに行かなかったり行かなかったりしました。よい思い出です。

VimとEmacs

私がVimを使い始めて、ちょうど1年くらいになるでしょうか。その前は、2年間ほどEmacsを使っていました。いい機会なので、Vimについて、そしてEmacsについて、思っていることを書こうと思います。だいぶ取り留めもない感じになると思います。

Vim vs Emacsについて

「Vim vs Emacs」、たまにみかけますが、どうなんでしょう。あんまりしっくり来ません。Vimはテキストエディタだし、EmacsはOSなので、その辺りの視点が定まってないとどうしても違和感のある比較になりがちです。「エディタとしての、Vim vs Emacs」ならVimの圧勝、「OSとしての、Vim vs Emacs」ならEmacsの圧勝という感じでしょうか。でも、Vimがエディタであろうとしていること・EmacsがOSであろうとしていることを考えると、それって当たり前ですよね。わざわざ記事にして比較するまでもない感じがします。

というわけで、どうせ比較をやるなら「エディタとしての、Vim vs Evil on Emacs」とかそういうのにしてほしいかな。Evilがバージョン1.0になりEmacsでもやっとまともなテキストエディタが使えるようになったということで、誰か良い感じの比較記事を書いて欲しいと思います。

そうそう、Vim vs Evilといえば、Evilの置換コマンド(:s)とか、Vimに比べてかなりいい感じですよね。Vimmerの皆さんはぜひあれ試してください。

Emacsについて

じゃあEmacsは何と比べるんだ、とすると、Chrome OS辺りがしっくりくるのではないでしょうか。アプリケーションプラットフォームとしてEmacsとChrome OSを比べると、なかなかおもしろい比較ができます。

  • ブラウザベースでクラウドとの親和性が高いChrome OSと、そうでないEmacs
  • Emacsには優れたアプリケーション(org-modeは最高の執筆環境ですね)が多くある
  • Chrome OSには専用アプリケーション(Chrome Web App)がまだあまり多くはないが、世界中のウェブアプリケーションをそのまま利用できる
  • ほぼすべての操作をキーボードで行えるEmacsと、どうしてもマウスを多用しなければいけないChrome OS
  • かなり高い表現力を持つHTML(Chrome OS)と、HTMLに比べて表現力がかなり制限されるバッファ(Emacs)

Emacs、ここで言うのはXEmacsですが、の表現力って、文字単位で装飾やフォントサイズを変えられたり、画像をインライン表示できたり、明らかにエディタとしての役割を超えたものになっています(まぁOSですから。)。これ、バッファの中身を見るとわかるんですが、かなりHTMLの様なノリです。imgタグで文書内に画像を埋め込んだりするような、ああいう感じをイメージするとつかみやすいかと思います。

じゃあHTMLの表現力と比較するとどうかとなると、これはもうHTMLの圧勝なわけで、OS、というかアプリケーションプラットフォームとして見た時、Emacsの表現力はChrome OSには敵いません。

じゃあ、どうしますか。と思った人は他にも居るようで、xwidgetブランチではEmacsでwebkitを表示しちゃおうぜみたいな試みがあります

個人的には膨大なEmacs Lispの資産を生かしつつ表現力の向上を測る必要があると思っていて、じゃあそうすると既存の仕様のバッファからHTMLへのトランスレータを実装して、どうのこうの、みたいなものを考えています。裏で起動させたEmacsとプロセス間通信して、バッファをHTMLに変換して表示するEmacsのWrapper的なソフトウェアを開発していたのですが、途中で運悪くVimに出会ってしまった為お蔵入り中です。ちなみにコードネームは「すごいEmacs」でした。

2年間使い続けたソフトウェアだけあって、Emacsへの愛着はそれなりにあるつもりで、だからこそ「Emacsってどうなんだ?」ということを考えてしまいます。というわけで、オチもなにもないですが、Emacsには頑張って欲しいです。

Vimについて

Vimです。Vimは、世界で一番素敵なテキストエディタです。皆さんご存じの通り、Vimは世間にあるその他のエディタとは根本的に違うパラダイムでできています。そうです、インサートモードがどうとか、ノーマルモードがどうとか、モーションやカウンタがどうとか、ああいうやつです。具体的には以前記事に書きましたので詳しくは割愛しますが、これを思いついた人はどう考えても天才です。

Vimをはじめて触った時、ものすごく感動したのを覚えています。出会って一瞬でその虜になってしまいました。こういう方は多いのではないでしょうか。 初めてプログラミング言語に触れた時・初めて関数型言語であるSchemeに触れた時、そして初めてVimに触れた時が、私の人生の3大感動ポイントです。

Emacsしか使ったことのない人(そしてEvilを使っていない人)や、VimやEmacsはなんかむずかしそう…と敬遠している方は、非常にもったいないです。騙されたと思って、一度使ってみてください。きっと、とても素敵な体験になると思います。

Vimと出会ってから

思えばVimに出会ってからの1年間で、いろんなことがありました。 日本のVimmerが集うチャットサービス「Lingr」のVim部屋に書き込みをし始めたのは、Vimを使い始めて2ヶ月経った頃だったでしょうか。 最初は「Minecraftやりたいです」みたいなことを書き込んだ気がします。今考えたらどう考えても頭おかしいですが、それがきっかけでujihisaさんと仲良くなり、Lingrによく出入りするようになりました。思ったよりVimmerは怖くなかったのです。

それからというもの、ujihisaさんにRubyを教わったり、thincaさんにVim script家庭教師をしてもらったり、Lingrのvimrc読書会に参加したり、vimshell使うとOS Xがカーネルパニック起こすとつぶやいてShougoさんにそれは違うと窘められたり、技術系アドベントカレンダー(もちろんVim Advent Calendarです)に初めて参加したり、thincaさんに誘われてTokyoVimに行ったり、暗黒美夢王の生歌(Vimソング)を聞いたり、mattnさんのダジャレを聞いて「oh…」となったり、バーベキューに参加できなかったり、momonga.vimを開催したり(参加者3名)、モバマスに課金したり、色々ありました。ものすごく濃い一年間だったと思います。

Vim力の向上もそうですが、高い技術力を持った方達と交流することで、エンジニア・プログラマとしての確かな成長を実感できた1年間でもありました。特にRuby力はかなり向上し、今では立派なtap厨になりました

Vimmerとしてはまだまだ初心者レベルの私ですが、次の1年間は、中級者ぐらいまでには成長することを目標にします。 というわけでVimさん、たまにEvilに浮気することもあるかもしれないけど、今後ともよろしくお願いします。

VimAdventCalendar 2012 236日目は

明日236日目の担当は@ujihisaさんです。ujihisaさんの誕生日があれであれです。