来年も使いたい Vim プラグインランキング2013

この記事は Vim Advent Calendar 2013 30日目の記事になります。
早くも2回目の記事になりますが、まだまだ参加者は募集しています。
興味のある方はぜひ!参加しましょう!!


さて、今回の記事なのですが、以下が元ネタになります。


と、言うことでわたしも今年お世話になった Vimプラグインを紹介してみようと思います。
なお、独断と偏見で決めたので偏っているかも知れませんがご了承下さい。
あとこのランキングはプラグインの使用頻度を重視した順番となります。

第10位[capture.vim]

Vim のコマンドの結果を新規バッファへと出力するプラグインです。
例えば、

:Capture map

で、キーマッピングの一覧を出力したり

:Capture !git --help

で、外部コマンドの結果を出力してくれたりします。

出力結果を確認したりコピペしたい場合にサッと利用できるので便利です。

第9位[restart.vim]

Vim の再起動を行うプラグインです。
session を利用して現在と同じ状態で再起動が行われます。
プラグインなどを作成している場合に Vim を再起動して動作を確認したい時などによく使用しています。

第8位[precious.vim]

https://f.cloud.github.com/assets/214488/810517/1d435a7c-eeb9-11e2-8b98-b2275db39695.gif
カーソル位置のコンテキストによって自動的に filetype を切り替えてくれる自作プラグインです。
markdown とか書いている時に地味に便利。
色々と細かいところが気になっているんですけどあまり改良できていないので来年はもうちょい何とかしたいですね…。

第7位[qfixhowm]


Vim でメモを取るプラグインはいくつか存在するのですがわたしは qfixhowm を使用しています。
ブログなどもこれを使用して記事を書いています。
また、これと連携する unite-qfixhowm も一緒に使用すると便利です。
今のところ他のプラグインに移行する予定はない。

第6位[コード補完]


いつもの。
Vim script を書く場合はほぼ必須ですね。それに限らないでも便利ですが。
今年に入ってから neocomplcache から neocomplete.vim へと開発が移行しました。
neocomplcache より高速に動作するので +lua な環境であれば移行するとよいと思います。

第5位[vim-prettyprint]

辞書やリストの値をいい感じに整形して出力してくれるプラグインです。
例えば、

echo g:neocomplete#force_omni_input_patterns


PP g:neocomplete#force_omni_input_patterns


というように整形して出力が行われます。
Vim プラグインを作っている時や変数の値を確認する場合に重宝しています。
変数に辞書などが使用されているケースは少なくないので入れておくとよいでしょう。

第4位[vim-quickhl]


任意の単語やカーソル下の単語をハイライトしたりするプラグインです。
複数の単語をハイライトする事が可能です。
例えば、変数をハイライトすればどこで参照されているのかが視覚的にわかりやすくなります。
必要がなくなればすぐにハイライトを無効にすることもできます。
以前から使用していましたが最近書きなおされて色々と機能が追加された模様。
もう1回機能を調べ直したいですね。

第3位[unite.vim]

いつもの。
もはやこれがないと Vim で何もできないと言っても過言ではないほど依存しまくっています。
unite.vim があればだいたいなんとかなります。
あと『unite.vim がよくわからん』って人がいると思いますが、まずは触ってみるとよいと思います。
そういう人は以下の記事が参考になるかも。

第2位[operator]

今年に入ってライフチェンジした機能その1。
と、いうか Vim 使ってから今まで operator ってよくわかっていなかったんですが、今年に入ってからやっとその利便性に気づきました。
vim-operator-replace を使用するとヤンクしたテキストと対象 textobj を置き換える事が簡単にできます。
今までは似たような処理を行う Vim script を書いていたのですが、これを利用することで置き換えがスムーズになり、更に textobj と組み合わせる事で柔軟性も増しました。
この利便性は使ってみないとわからなかったですね。
ちなみにわたしは s に (operator-replace) を割り当てています。

nmap s <Plug>(operator-replace)

第1位[textobj]

今年に入ってライフチェンジした機能その2。
textobj も operator 同様、いまいちよくわかっていない機能だったんですが、今年に入ってからその利便性にやっと気が付きました。
そのかいあって、vim-textobj のプラグインもいくつか作成しましました。
vim-textobj-multiblock も vim-textobj-multitextobj が便利すぎる。
例えば multitextobj を利用すれば、i( や i[ や i" のような textobj を 1つの textobj にまとめる事ができます。
どの textobj が使用されるのかはカーソル位置によってきまり、一番内側の textobj が使用されます。
これを利用すればいちいち i( や i[ や i" を選択しないでも1つのキーで () や や "" の 範囲を選択する事ができます。
multiblock は textobj ではなくて任意のブロックを設定する事ができます。
if 〜 end や function 〜 end、もちろん () や
なども設定できます。
便利すぎる。
あと自作の textobj 以外では vim-textobj-parameter もよく使用しています。
関数の引数の値とか変更したりコピペしたりすることは多いですしね。
その他、textobj のプラグインは以下にまとまっているので気になったものがあれば試してみるとよいと思います。

番外編

間違えて11個書いちゃったのでついでに載せっておきます。

[neobundle.vim]

プラグイン管理プラグインです。
以前(と言っても2年ぐらい前)は pathogen を使用していましたが今はもう neobundle.vim 一色ですね。
コメントアウトでプラグインの使用の有無ができるのは便利。
あとプラグインの初期化処理が neobundle.vim でフックすることができ、プラグインを読み込んでいない場合はプラグインの初期化処理を行わないようにすることもできます。
これで「ちょっと無効にした場合に autoload 関数読んでいてエラーが…」というのが回避することができます。

その他

  • Shougo/vimfiler.vim
    • ファイラ。unite.vim 並に依存している入れる枠が足りなかった
  • thinca/vim-quickrun
    • 即実行。お世話になっているとかそういうレベルじゃない。殿堂入り
  • osyo-manga/vim-reanimate
    • 終了時の状態を復元するための自作プラグイン
    • 自作プラグインでもかなり古い部類。その為コードがだいぶアレ
    • マンボウに叩かれながら地味に改良され続けている


と、いうような感じでよく使用しているプラグインをランキング形式で紹介してみました。
ぶっちゃけ『去年から続けているプラグイン多くない?』と言ってはいけない。
ここに載せてあるプラグインはよっぽどよい代替プラグインが出てこない限りは使い続けると思います。
ちなみに今現在、自作プラグインも含めて使用しているプラグインは120個です。
今日の昼ごろに使用しているプラグインを整理していたんですが、なんだかんだいって使っているプラグインが多くてなかなか減らす事ができませんでしたね…。