Modern Vim Life!

Vim Advent Calendar 2011の7日目です。

最近流行りのVimとは

Vimとは一般的には単なるテキストエディタのはずですが、ここ数年のVimの進化は単なるテキストエディタの枠を越えてVisual StudioのようなIDEのようなものからあらゆる情報を管理出来る統合ツールとなりつつあります。
これはVimと同様にEmacsでも同じ事が言えますが、ここ数年のVimは一部でEmacs以上になっていたりとその進化は凄まじいものがあります。
今日は少しでもVimに興味を持ってもらえるように最近のVimで出来る事を紹介したいと思います。

こんな事が出来るよ!

  • あふ風の高機能なファイラ
  • あらゆるものをソースにインクリメンタルに候補を絞り好きなように実行する
  • Vimの中で完結出来るシェル実行環境
  • あらゆるテキストを補完する事が出来る高度な補完環境
  • Linuxのパッケージ管理システムのようにプラグインを管理する
  • VimTwitterを楽しむ

ではそれぞれを紹介していきましょう。

あふ風の高機能なファイラ

VimにはデフォルトでNetrwというファイルエクスプローラが付属されており、":Explore"と入力する事により使用する事が出来ます。
が、最近のVimでは vimfiler というVimプラグインが流行っており、専らファイルブラウザとして使用する分にはこちらの方が圧倒的に便利です。
見た目は2画面ファイラとしても有名な "あふ" というファイラに似ており、そちらを触った事があるUserなら自然と使用する事が出来ます。
特に後述するunite.vimとの連携機能や拡張リネーム機能は他のファイラには存在しないものであり、vimfilerを使う時だけの特権と言えるでしょう。

あらゆるものをソースにインクリメンタルに候補を絞り好きなように実行する

unite.vim は何らかの情報ソースを入力し、それを元にインクリメンタルに候補を絞って実行させる事の出来るプラグインです。
上記の画像では現在存在しているbufferを対象に"vim"というワードに対してインクリメンタルに候補を絞っています。
絞った候補に対しては自由なactionを指定する事が出来、それらを組み合せて素早く情報にアクセスし、仕事をするという事が可能になります。


unite.vimVimのバッファ管理はもちろん、コマンドランチャやGrep対象の絞り込み、履歴情報の参照、辞書情報の検索やWeb上にある情報にまでアクセスし、候補の絞り込みを行う事が出来ます。
これらは全てunite.vimの"source"として入力する事が出来るものであればどんなものでも対象にする事が出来ます。
この力は絶大であらゆる作業効率を極限まで効率化する事が出来ます。
unite.vimVimプラグインの一種ですが、それ自身のプラグインも沢山あり、プラグインプラグインとも言うべきでしょうか。
非常にプラグイン自体も作りやすくVim scriptに手を始めて出すような人にも手が出しやすいと思います。
とにかくこれを使っていないとVimを使う時に半分くらい色々と損をしていると思います。絶対オススメ!!

Vimの中で完結出来るシェル実行環境

プログラミングなどを行う際にはcmd.exe(これは少ないでしょうけど)、Windows PowerShellbashzshなど様々なシェル環境を使用する事となると思いますが、Vimにはpure Vim scriptで書かれた独自のシェル、vimshell があります。
わざわざVimの中でシェルを使う事はないだろうと思うかもしれませんが、これが結構便利です。
まず、コードを書きながらVimから出る必要が一切ありません。
そしてVimの中で作業が出来るという事はVimのフル機能を使用する事が出来ます。
Vimのフル機能を使用するという事は当然プラグインを使用する事も出来ますし、その気になればプログラムのデバッグも出来ます。
シェルの履歴は当然Vimの中で保持出来ますし、unite.vimのsourceから引っ張る事も出来ます。
もし、vimshellで実行出来ないような環境があった場合には Conque というVimを疑似端末として振る舞わせるプラグインもあります。
Conqueは疑似端末としてシェルを起動するので、よりVimを端末として使用する事が出来ます。
当然疑似端末は互換性の代わりにVimとの親和性が低くなってしまう欠点もありますので、ご利用は計画的に。

あらゆるテキストを補完する事が出来る高度な補完環境

Vimではコードやテキストを補完出来るプラグインとして有名なのが acp.vimneocomplcache などがあります。
これらはいれてみて即便利さが実感出来るため、とてもすぐに恩恵を受ける事が出来ます。
特にneocomplcacheはあらゆるテキストを補完するだけではなく、キャッシュし(それも非同期に)快適な補完を提供してくれます。
更にC++のような解析の難しいような言語でもlibclangを使用したneocomplcache-clang を使用すると精度の高い補完を行います。
※上記画像はboost::fusion::vectorのメンバをneocomplcache-clangでコード補完したもの
当然補完対象が多くなればなるほど、時間もかかりますので、あまりに大きすぎるライブラリを使用する時はご注意を。
C++に限らず、様々な言語に対応しているのでとりあえず使ってみてその素晴らしさを実感してください。

Linuxのパッケージ管理システムのようにプラグインを管理する

Vimプラグインは数が増えるとその管理が厄介で手がつけられなくなる事もあります。
Linuxにはパッケージを管理するような仕組みが色々とありますが、Vimにはプラグインを管理するプラグインがあります。
現在主流なのは pathogen.vimVundleneobundle.vim の3つが有名です。
私はneobundle.vimを使用しています。
基本的にはvimrcに管理したいプラグインの名前を記述し、あとは更新コマンドを実行するだけで常にプラグインの最新版を得る事が出来ます。
プラグインは自分でも何を使用しているのかよくわからなくなる時がありますが、これがあれば自分で何をいれたのかすぐにわかります。
出来るだけ始めに導入しておいて特に楽が出来るプラグインだと思います。

VimTwitterを楽しむ


※名前は微妙に伏せさせて頂いております

VimではTwitterも手軽に楽しむ事が出来るプラグインとして、TwitVim があります。
当然文字だけの世界になってしまうのですが、気軽にTweetしたり、TLをチラ見する程度には十分です。
あくまでもエディタを触っているようにしか見えないので、仕事中にTwitterするのにもピッタリですね!!
他にもvimshellを使用する事により、Termtter やUserStream対応の earthqueke.gem といったものも使用出来ます。
WindowsだとRubyとの相性の悪さでなかなか大変かもしれませんが、よりVimTwitterを楽しみたいという方にはオススメです。

近代的なVimライフを楽しみましょう

Vimをただのテキストエディタと侮るなかれ。
やろうと思えばなんだって出来る凄いやつです。
この記事から少しでも沢山の人に興味を持ってもらえたらとても嬉しい限りです。
今回各々のプラグインの使用方法の詳細までは紹介しませんでしたが、Google先生に聞いてもらえると大抵はわかります。
御自分のVim力アップのためにもぜひ調べてみてください。