neocomplcacheとclang_completeの導入
なんかこう、自分もこの辺よくわかってなかったので
前提としては、
- neobundleでプラグインを管理している
- vimprocはインストール済み
とします
インストールするプラグイン
- Shougo / neocomplcache
- 汎用的な入力補完のプラグイン
- Shougo / neocomplcache-clang_complete
- neocomplcacheとclang_completeの競合を解決するプラグイン
- Rip-Rip / clang_complete
- clangを使用して補完するプラグイン
C++でオムニ補完する場合、入力の候補はclang_completeが作成して、作成した候補をキャッシュして高速に表示するユーザインターフェースの役割がneocomplcacheってイメージ。(間違ってたらゴメンナサイ)
インストール
さっそくneobundleでインストールしてみます
.vimrcに以下を追加
... NeoBundle 'https://github.com/Shougo/neocomplcache.git' NeoBundle 'https://github.com/Shougo/neocomplcache-clang_complete.git' NeoBundle 'https://github.com/Rip-Rip/clang_complete.git' ...
vimでneobundleのインストールコマンドを実行
:NeoBundleInstall
unite.vimがあるときは
:Unite neobundle/install
でもいいと思います(後ろに!を付けるかどうかはご自由に)
これでプラグインのインストールは完了
neocomplcacheの有効化
まずは最小限neocomplcacheが動くことを試してみます
.vimrcに以下を追加
let g:neocomplcache_enable_at_startup=1
vimを再起動するとneocomplcacheが有効になってます*2
vim scriptの補完はデフォルトで実装しているようなので、.vimrcでてきとうに入力してみるとだいたいどんな感じかわかると思います
他にも色々と細かい設定だったり自分好みにキーマップを設定したりインクルード補完が強力だったりとありますが、その辺は各自でご自由に
理解できる範囲からコツコツと
neocomplcache-clang_complete と clang_complete
これまた最低限の動作を確認
.vimrcに以下を追加
let g:neocomplcache_force_overwrite_completefunc=1 let g:clang_complete_auto=1
※clangの実行ファイルがPATHに設定されていない場合は以下を設定する必要があります
let g:clang_exec="実行ファイルへのパス"
※libclangを使って高速化する場合は以下を追加
let g:clang_use_library=1 let g:clang_library_path="libclang.soまたはlibclang.dllを格納しているディレクトリのパス"
これでneocomplcacheとclang_completeが競合なく使えるようになりました
まだ使うと物足りない部分もあると思いますが、とりあえずc++のコードを書いてみるといいと思います
その他細かい設定は自分も理解していない部分が多いので、ここから先は動かないとか言われても知らないです
あくまで、参考程度という事で
clang_completeの設定
clang_completeでclang実行時にオプションを追加する方法は2つあります
自分は全てg:clang_auto_user_optionsで設定しています
g:clang_auto_user_options はユーザーオプションのソースを","で区切って設定します
ソースの種類は以下になります
- path
- .clang_complete
- {anything} (ユーザ定義のソース)
pathはvimの変数"path"をインクルードディレクトリに追加することを表します
.clang_completeは、~/.clang_complete ファイルを読み込みます
ユーザ定義のソースの例として"gcc"が定義されていて、gccのインクルードディレクトリを読み込みます
デフォルトの値は"path, .clang_complete, gcc"ですが、自分はgccを外しました
g:clang_auto_user_options="path, .clang_complete"
まず、gfでファイルに飛びたいので.vimrcにpathを色々追加します
set path+="色々" ...
あと必要なオプションは全て~/.clang_completeに書いてます
-std=c++11 ...
これでだいたいは動くと思います*4
最後に
まず、ドキュメントを読もう