なぜ、IDEじゃなくてVimを使うか。



* __ここに書かれていることは私の「なぜ、IDEじゃなくてVimを使うか。」の理由なので、Vimmerな皆同じ理由とは限らないのでご注意を...。__
* __また、だいぶ省略しているので、Vimを全くしらないひとには分からないところも多々あるかもしれません、ご了承を...。__
* __Vim以外のテキストエディタ(Emacs、Sublime Text、Atomなど)では同じようなことが実現できるかもしれないので、必ずしもここであげたことが正しいわけではないですのでご勘弁を...。__


# 1. Mac、Linux、Windowsのどれでも使える。

MacやLinuxでは大抵デフォルトでvimコマンドが入っています。
でもこれはCUI版VimなのでGUI版Vimを使いたい人は、
プログラム管理ツールとかでさっくとインストールできます(たぶん)。
Ubuntuだと`sudo apt-get install vim-gnome`でインストールできますね。

Windowsだと[本家][1]や[香り屋 — KaoriYa][2]からダウンロードして使うことが出来ます。
「WindowsでVimが使えない」とかTwitterなどでよく見ますが__普通__に使えます。

また、Vimをソースコードからビルドするのも割と簡単です。
[MinGWを使ってのビルド方法][3]や[Linuxでのビルド方法][4]を参照して書いてある通りのコマンドを実行すれば大抵の環境でビルドできるでしょう。
なんといっても、ビルド時間が1〜2分くらいなのでとてもありがたいです。


# 2. 起動が速い。

Vimの起動時間は数ミリ秒という単位で起動し終えます。
IDEだと起動時間が大抵秒単位じゃないですか、私には耐えられないですね。


# 3. キーマッピングが自由自在。

IDEやその他のテキストエディタでのある程度はキーマッピングの設定ができると思うのですが、大抵は修飾キー(CtrlやAltキーなど)が必要です。
その点、Vimは修飾キーなしのマッピングも自由に出来ます。
なぜ「Vimは修飾キーなしのマッピング」が可能かというと、Vimにはモードという概念があり、
これによりあるモードではnは「nを入力する」だったり「次の検索文字列に移動」だったりとワンキーで何役もの仕事をしてくれます。


# 4. 他のテキストエディタやIDEに比べて、カーソルが速く移動できる。

他のテキストエディタやIDEでは、Ctrl+矢印キーなどで単語の末尾やHomeキーで行の先頭に移動できたりしますが、
Vimはもっと細かい単位(?)で移動したりできます(多分)。
簡単なのを挙げて見ると`gg`,`G`,`w`,`e`,`f`,`t`,`ge`,`b`,`h`,`j`,`k`,`l`,`$`,`^`、などなんですが、
ほとんどキーがホームポジションから近く、修飾キーなしで押下できるのがとてもよいです。
これもモードという概念があるおかげ。


# 5. ホームポジションを崩さないで操作ができる。

Vimのデフォルトのキーバインドは、基本的にホームポジションを崩さないで操作ができます。
簡単な所でいうとカーソル移動が`h`,`j`,`k`,`l`です。わざわざ矢印キーまで手を延ばさなくても大丈夫です。
他に、マウスでメニューを選択してあれこれすることがほぼないです。
大抵、コマンドモードというモードから実行することができます(これは当然キーボードから操作できます)。


# 6. 正規表現が豊富(変態)。

私の実感ではVimは他のIDEやプログラミング言語に比べて正規表現が豊富(変態)だと思います。
正規表現が豊富なおかげで、文字列の置換などが的確で一発で行えたりします。
当然Vimなので文字列の置換も、ダイアログボックスが表示されてマウスに手を延ばしたりせずにキーボードから行えます。
(ExcelとかIDEはダイアログボックスなのでつらいです...)


# 7. テキストオブジェクトという機能が便利過ぎる。

Vimにはテキストオブジェクトという機能があって、括弧やクォート内の文字列を簡単に選択や切り取ることができます。
IDEなどだと「ダブルクリックで単語選択」や「Shiftキー押しながら矢印キーでちまちまと選択」なのでとてもつらいです。
Vimは括弧内の選択は`vib`の3キーで済み、とても[FP][6]の消費がエコです。


# 8. 日本語ドキュメントやヘルプが豊富。

まぁ、次の「9. 日本のVimコミュニティがやばい。」に関連しますが、Vimに関する日本語のドキュメントやブログ記事が一杯あります。
最近ですと[Vim Advent Calendar 2012][7]がいい例だと思います。これだけで日本語のブログ記事が365個あることになります。とても便利です。
また、Vimの仕様はヘルプであるといっていいくらい、Vimのヘルプは充実しています。
これもほとんど日本語に翻訳されていますので英語で困ると行った場面はないでしょう([vim-jp/vimdoc-ja][10]を参照)。


# 9. 日本のVimコミュニティがやばい。

例えばVimのバグを見つけた場合、[vim-jpのissuesリポジトリ][8]に日本語で投稿すれば、大抵だれかしらのVimmerが勝手に解決してVim本家にパッチを送ってくれます。
また、[Lingrというサービスのvim-user.jpという部屋][9]にはコアなVimmerがたむろしているので、ここに質問をなげれば大抵回答が返ってきます。とても便利です。
あとは、TwitterでVimに関する質問を呟けばだれかしら答えてくれます。これもとても便利です。
(私もですが、Twitterで「vim」検索はよくしていますし、たぶん「vim」という単語がツイートに入っていれば誰かしらが答えてくれるでしょう)


# 10. ある意味マルチプラットフォームなVim scriptという言語。

RubyやPython、batファイル、PowerShellスクリプト、...などなど、スクリプト系言語は一杯ありますが、
Vimが入っていればMac、Linux、Windowsのどれでも使えるVim scriptはとても便利です。
RubyやPythonに比べるとVim scriptは言語構文やライブラリの劣りは多々ありますが、シェルスクリプトで行うことぐらいであればできます。
Vim scriptは正規表現が変態なので、もしかしたらRubyやPythonより便利な場面があるかもしれませんねw。


# 11. 設定ファイルがプレーンテキストでかつ可読性がある。

IDEなどのツールは設定ファイルがとても難儀なものです。設定ファイルがプレーンテキストではあったりするのですがフォーマットがXML形式ととても読みにくかったり。
あと、設定ファイルのドキュメントはないなどと不便で極まりないです。
Vimは.vimrcというVim scriptで書かれたプレーンテキストな設定ファイルです。Vim scriptという独自の言語で書かれているというもののXML形式に比べるととても読みやすいです。
また、ヘルプも充実しているので困ったらすぐに調べることができます。
.vimrcの書き方がよくわからなくて困ってしまったら、[vimrc読書会][11]というイベントに参加してみるとよいかもしれません。


# 12. 他言語サポート

私はほとんどの言語(JavaだろうとC#だろうと)をVimで書く人なんですが、Vimはほとんどの言語のシンタックスハイライトがサポートされています。
(さすがに動的デバッグ時はIDEをしょうがなく立ち上げたりはしますけどね...)

# 13. UIが変わることがない。

IDEやOffice製品はバージョンアップデートごとにUIが変わったりします。
私はあれが非常に困ります。例えば、Office製品2003から2007あたりでリボンが実装されてUIがまるっきり変わった。
UIが変わるたびにあの機能どこだっけと探しまわらなくてはなりません。
その点、Vimは今後も一生UIが変わることはないでしょう。
あと、各言語ごとにIDEの使い方を覚えるのもメンドイです。


# 終わり

とりあえず、私の「なぜ、IDEじゃなくてVimを使うか。」の理由をあげてみました。
ほかにもまだまだあると思うのですが、まぁこれが主な理由かなっと思います。



[1]: http://www.vim.org/
[2]: http://www.kaoriya.net/software/vim/
[3]: http://vim-jp.org/docs/build_windows_mingw.html
[4]: http://vim-jp.org/docs/build_linux.html
[5]: http://vimblog.hatenablog.com/entry/vim_motion
[6]: http://d.hatena.ne.jp/ku__ra__ge/20090617/p6
[7]: http://atnd.org/events/33746
[8]: https://github.com/vim-jp/issues
[9]: http://lingr.com/room/vim/
[10]: https://github.com/vim-jp/vimdoc-ja
[11]: http://vim-jp.org/reading-vimrc/