Vimを全ての開発で利用する

最近、Unityを使ったゲーム案件を担当しているのですが、
クライアントでのC#開発だったり、サーバサイドのPHP, Ruby開発だったりと、
色々な言語を使って同時に開発することが多くなってきています。

◆開発環境の選定問題
Windows開発では、Visual Studio、
Android開発ではAndroid Studio, IntelliJ IDEA, Eclipse、
iOS開発では、xcode、
Unity開発ではMono Develop、
PHP開発ではPHP Stormなどなど、
各種便利なIDEが存在しているのですが、
IDEを行き来した場合の「操作性のズレ」ということに悩まされることが多くなると多います。

そこで、私は以前から「Vim」を開発環境の軸にすることに決めて、Vimのみを使って開発するという一点突破を行っています。

◆統一開発環境Vimにする利点
統一開発環境をVimにする利点として、以下の点が上げられると思います。
・Vimの操作のみ覚えればよい
・クライアントコード↔サーバサイドコードの移動がシームレスに行える
・開発環境を継続的に改善していくことによって、「エンジニアの資産」にできる
・Pluginが多く公開されており、また必要な物は自分で作成することができる

◆私のvim環境
私がどのようにVim環境を改善してきたかは、dotfilesとしてGitHubに軌跡を残してきました。
PHP開発を案件があれば、PHP環境の最適化を行い、
Unity案件があれば、C#の開発環境を最適化してきています。
技術者界隈では、Vimにかぎらずdotfilesのように環境設定を公開することによって、
効率のよい開発環境を共有していくということが最近の主流になっているようです。

以下が私のdotfilesとなっており、シェルスクリプトを実行することによって
新しいマシンや開発サーバを導入したとしても、簡単に最新の開発環境を再現できるようにしています。
https://github.com/akinama/dotfiles

◆おすすめのPlugins
Pluginが入っていない、デフォルトのVimでも問題無く開発できるのですが、
Pluginを入れることによって圧倒的に開発効率を向上できます。
その中から、特に便利だと思われるものを紹介します。
また、Plugin管理にはNeoBundleという仕組みを利用しています。
https://github.com/Shougo/neobundle.vim

・Unite : https://github.com/Shougo/unite.vim
主流のVimの統合インターフェース。
Unite Pluginとして、各種Pluginを導入ことによって、
統合開発環境として利用できるようになります。

・neocomplete : https://github.com/Shougo/neocomplete.vim
コード補完機能。
インテリセンスを利用するためにも利用しています。

・unite-gtags : https://github.com/hewes/unite-gtags
GNU GlobalのタグをUniteから参照する。
GNU Global+Exubarent Ctagsでタグ付けをして開発していますが、
クラス・メソッド・変数をdef/refでジャンプしたりするために利用しています。

・Git-Grutter : https://github.com/airblade/vim-gitgutter
Git管理下のファイルをVim上で変更内容を確認する。
Git管理下のファイルを追加・削除・更新がビジュアル的に常に確認できるようになります。
一瞬でそのファイルのどの部分が現在へ変更されているかを確認するのに便利です。

上記は、よく使うPluginですが、
https://github.com/akinama/dotfiles/blob/master/.vimrc
から、現在利用しているPluginを参照できるので、よければ参考にして下さい。