Vim で高速にコード補完を行うらしい YouCompleteMe を試してみた

少し前から気になってはいたんですが、ちょっと試してみました。


これは何かというと Vim で高速に動作する補完プラグインです。
どこら辺が高速かというと殆どの処理が Vim script ではなくて C++Python で実装されています。
その為、このプラグインを使用するためには C++ のコードを自分でビルドする必要があります。
その他、詳しいことは README を読んで下さい。


[テスト環境]

[覚書]

  • 確認出来たコード補完
  • 全体的に動作が軽い
  • neocomplete.vim よりも補完が早い(ような気がする
  • vim の補完精度は neocomplete.vim に比べていまいち
    • commad や関数の補完はされなかった
  • fuzzy-search が無効化できないのは個人的にすごく不便
  • neocomplete.vim とはだいぶ違う印象なので一概に比較するのはむずかしそう
  • jedi が YouCompleteMe に組み込まれているので Python のコード補完は便利そう
  • Clang を使用して C++ 等のコード補完を行う場合は別途 LLVM/Clang をビルドしておく必要がある
  • Clang を使用した C++ のコード補完の速度は clang_complete とあまり変わらない印象
    • キャッシングする設定があるぽいけどちゃんと動いているのかが分からない
  • Clang 版はめちゃくちゃ不安定。Vim が100回ぐらい突然死した。
    • ここで return する時に死んでいるみたいなんだけどさっぱり分からない
  • :YcmCompleter GoToDefinition で定義位置へ飛べる(!)
  • Vim との親和性が低そう
  • C++ のコードが Boost を使っているのでだいぶ本気。
    • リポジトリには Boost の一部も同梱されている
    • LLVM/Clang 以外は他にライブラリをインストールする必要はなさそう
  • C++ をビルドするのが手間
    • 手元だとコードと設定をいじらないとビルドが出来なかった
    • ただ、cmake でビルド環境を構築するので環境に合わせたビルドは楽

[所感]

全体的には確かに軽量でストレスフリーなんだけど Vim プラグインとしての使い勝手を考えると neocomplete.vim から乗り換えるほとではない感じかなぁ。
どちらかというと、どっちかだけを使用するのではなくて両方のいい部分を共有して使って行きたい。
特に :YcmCompleter GoToDefinition みたいに補完とはあまり関係のない機能とか使いたい。
あとは全体的に安定して Vim が落ちなくなれば…。


そんな感じでざっくりとですが試してみました。
ぶっちゃけまだ詳しい使い方とか設定方法が分かっていないので誰か Vim Advent Calendar でまとめ記事書いて下さい!!