勝手にプラグインを比較してみるテスト

今使ってるVimプラグインで、似たような機能を提供するもの同士を比較してみるテスト。あくまで個人的な比較なので参考程度に。と言いたいけど細かい説明相当端折ってるので参考にもならないかも。
ここで挙げている特徴はもう一方に対する特徴であり、もう一方にはないと言う意味。細かい機能を全部列挙してると大変なので、有名どころ、個人的に重要な機能を中心にピックアップ。

ちなみに私の環境には以下で比較してるプラグインは全て入っていて、たまに気まぐれに使う方を切り替えたりしてる*1

fuzzyfinder.vim vs ku.vim

バッファやファイルなどを曖昧に選択できるプラグイン
どちらも起動すると上部分に小さな選択用ウィンドウが開かれ、選択候補がポップアップで表示される。

両者の違い
fuzzyfinder.vim ku.vim
比較バージョン 2.19 0.1.9
候補選択用ウィンドウの開かれる位置 現在のウィンドウの上部 現在のタブページの最上部
候補選択用ウィンドウの高さ 1行 2行
ポップアップ方式 ユーザ定義補完 オムニ補完
ソース Buffer
File
Directory
MRU-File
MRU-Command
Bookmark
Tag
TaggedFile
buffer
file(+directory)
history
source
(pluggable なので追加可能)
fuzzyfinder.vim の特徴
  • 候補の並び順にマッチの度合いが考慮される。
  • 候補の並び順に過去の入力履歴が考慮される。
  • 部分一致による選択も可能。
    • 曖昧一致: *a*b*c* 部分一致: *abc*
  • 全ての候補に数字が振られ、数字で候補が指定できる。
  • 環境変数の展開。
  • 任意のパターンを任意の複数の文字列に展開(複合検索)。
    • ku.vim にも ku-prefix-expansion があるが、prefixのみ、単一文字列にのみしか展開できない。
  • 候補選択ウィンドウの初期文字列を指定。
  • 一度に表示される候補の最大数の指定(高速化のため)。
  • 長すぎる項目の末尾の省略表示。
  • +migemo が有効だと migemo が使える。
ku.vim の特徴
  • ソースが pluggable。
  • 選択した対象に対して多数のアクションが選べる。
    • fuzzyfinder.vim は、その場、横分割、縦分割、タブのいずれかで開く、の4つのみ。
    • ku.vim は、加えて一番下、とか :lcd する、とかいっぱいある。(ソースによって異なる)
  • 候補選択ウィンドウに対してかなり自由な初期化が可能。
    • autocmd FileType ku を使う。
  • file で、デフォルトでは . で始まるファイル、ディレクトリを隠してくれる。
    • . を入れると表示される。
  • :help がある。
極めて個人的な感想

ku.vim の pluggable な点については大きな可能性を感じつつも、 fuzzyfinder.vim の候補の並び順の調整のされ方が秀逸で、結局今のところは fuzzyfinder.vim を使ってる。個人的にはソーティングの他に、複合検索、初期文字列設定などがポイント高いです。
ソーティングに関しては ku.vim の方はソースごとに制御できる関係もあってかこういった機能は付いてない模様。でも逆にマッチ具合とかでの並び替えはソース側からはできないから、本体でやってくれると嬉しいなぁ。ソース側の順序は同ランクだったときの順序とかで十分だと思う。

ku.vim は、作者様がかなりこだわってたのもありかなり動作が速い(気がする。ちゃんと計ったわけではない)。
オムニ補完を使ってるのも地味にいい。ユーザ定義補完だとが使えないんだよね…。

あと、ku.vimWindowsだとfileでディレクトリが辿れない模様。また、フルパス指定もできない。本当ならこんなところに書かずに作者に垂れ込むべきなんだろうけど、ソース見たら FIXME: になってたので恐らく知ってて放置してるのかと。

以前どこかで ku の tag ソースを書くとボソッと発言して未だに出来てないのは多分ずるずると fuzzyfinder.vim を使ってるのが原因かなぁ(言い訳すんな)。

autocomplpop.vim vs neocomplcache.vim

Vimの補完機能(:h ins-completion)を自動で呼び出すプラグイン。いちいち補完開始キーを押さなくても補完を開始してくれるので、補完機能の恩恵を存分に受けることが出来る。

両者の違い
autocomplpop.vim neocomplcache.vim
比較バージョン 2.6 1.48
補完方法 状況に応じた各種組み込み補完 ユーザ定義補完
Vim起動時 デフォルトで有効 デフォルトで無効

※両者ともあまり設定は弄ってないので細かな違いは把握しきれていない。

autocomplpop.vim の特徴
  • 状況に応じてキーワード補完、ファイル補完、オムニ補完を自動で呼び出す。
  • CursorMovedI ではなく key mapping をトリガにすることも可能。
    • 昔の名残りなので通常は必要ない。
neocomplcache.vim の特徴
極めて個人的な感想

一長一短。neocomplcache.vim は極めて柔軟な補完が可能だが、独自実装のため標準のキーワード補完では補完されるキーワードを拾いきれないことがある模様。
また、neocomplcache.vim の方はオムニ補完を起動してくれない。惜しい。
が、neocomplcache.vim の独自補完はかなり完成度高いと思う。「自動的に補完を開始してくれる」以上のことをしてくれる。キャッシュのおかげで速度も申し分ない。実際今はメインはこっちを使ってる。

何がしたかったかと言うと

こうやって書いておけばいつの間にか欠点が直ってたりしないかなーと言う作戦。

とりあえず勢いだけで書いてみたはいいけど全体的に言葉足らずで中途半端な記事になってしまった気がする。反省。*2

追記

表のプラグイン名を配布場所へのリンクにした。よく考えたら配布場所も書いてないのはどうかと思うよね…。

追記2

neocomplcache.vim のオムニ補完は、作戦通り1.50で実装されました。パチパチ。

*1:だから作業が進まないんだ!

*2:後でちょくちょく書き換えるかも?