はじめに
学生時代、初めてコードを書き始めてからこれまでずっとvimを利用して来て、いろいろな知見も溜まって来ました。その中で、様々な機能やプラグインを利用することにより、カスタマイズしたvimは完全ではなくともある程度はIDEに近い機能を搭載することができるんじゃないかと感じています。
そこで、この知見を自分のためにも一度まとめておこうと思い、vimについて不定期にまとめを書いてみることにしました。もう知ってるよって話も多いかもしれませんが、さらにこんな便利なものがある、とかこういうやり方の方がスマートだ、という話があれば指摘頂ければ嬉しいです。
また、最近ではAtomやRubyMine、PhpStormなどのIDEが主流になりつつあるし、それらが非常に便利だということも理解してるのですが、それでもあえてvimを使いたいという奇特な若者のために、有益な情報を提供できれば幸いです。
IDEとは何か?
まず、IDEとは何でしょう。IT用語辞典にわかりやすい説明があったので、見てみましょう。
プログラムのソースコードを記述するためのテキストエディタを中心に、ライブラリや開発中のクラスなどの仕様や内部構造を表示する機能、ソースコードから実行可能ファイルを構築(ビルド)するための機能や、コードとともにデータやドキュメントなどを一括して管理するプロジェクト管理機能、ファイルの新旧の版管理や複数人による編集を管理するバージョン管理機能、ステップ実行やインスペクションなどテストやデバッグを支援する機能などを持っていることが多い。プラグインなどの拡張機構を用いて、後から対応言語や機能を増やすことができるものもある。
エディタは一般的なテキストエディタとして機能に加え、入力途中の文字列から予約語や関数名、プロパティ名、メソッド名などの候補を推測して自動的に提示してくれるコード補完機能や、予約後や区切り文字などを認識して色分けして見やすくする機能、コンパイルエラーなどが発生した場所をエラーメッセージ等とともに強調表示する機能など、コード記述に特化した便利な機能が盛り込まれていることが多い。
IT用語辞典 e-Warodsより
http://e-words.jp/w/IDE-2.html
rubyやPHPの場合、そもそもビルドやコンパイルは必要ないのでスキップするとして、それ意外についてはvimで実現可能なものが多いです。つまり、vimはIDEであるということがわかります(強引)。
LL言語以外はvimで書かないのかってツッコミもあるとは思いますが、経験上例えばObjective-cとかはさすがにXcodeで書いた方が良いと思います。ひとまずこの連載では、LL言語、特にrubyを書くときにvimをIDE(っぽいもの)として利用する、というケースを想定して記事を書いていこうと思ってます。
今後記述予定の内容
この連載では、vimで下記の様な機能を利用できるようにし、vimをIDE(っぽいもの)として使うための方法を順に記述して行きます。
- [第1回] NeoBundleを利用してvimプラグインを一元管理する
- [第2回] Unite.vimを利用した強力なファイル管理/操作機構を導入する
- [第3回] ctagsとunite-tagを利用してメソッド / クラスの定義元へのジャンプ機能を導入する
- [第4回] neocomplcacheを利用した強力なコード補完機能を導入する
- [第5回] neosnippetを利用してIDEと遜色ないスニペット機能を導入する
- [第6回] gitvを利用してvimからgitを快適にブラウジングする
- [第7回] vimprocを利用してカーソル位置部分のテスト(Spec)のみをvimから走らせる
次回は、まずはNeoBundleのお話です。すでに使ってるよって方も多いと思いますが、まずこれを導入している前提でないと他のプラグインの導入方法の説明が面倒なのと、NeoBundleとプラグインたちを上手く管理するための.vimrcの知見も書いてみようと思います。