必要にかられて。
そして賢い補完なしのコーディング生活は嫌なので。
そしてlibclangの場所を探したりで結構ハマりまくったのでメモ。とりあえずはこれで正常に動いてるっぽいけどまた追記あるかも。
使うプラグイン
'Shougo/vimproc'
'Shougo/neocomplcache'
'Rip-Rip/clang_complete'
上記ふたつは御馴染みのプラギンなので説明は割愛。
clang_completeは、clangが持つ静的解析の機能を使ってCやC++のコードに対して補完を出してくれるといういかしたプラグイン。こいつをneocomのオムニ補完のソースとして使う。
" ----------------- neocomplcache --------------- let g:neocomplcache_force_overwrite_completefunc=1 if !exists("g:neocomplcache_force_omni_patterns") let g:neocomplcache_force_omni_patterns = {} endif let g:neocomplcache_force_omni_patterns.cpp = '[^.[:digit:] *\t]\%(\.\|->\)\|::' " ------------------- clang_complete ------------- " neocomplcacheとの競合を避けるため、自動呼び出しはOff let g:clang_complete_auto=0 let g:clang_auto_select=0 "libclangを使う let g:clang_use_library=1 let g:clang_debug=1 if has('mac') " Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/libの中からシンボリックリンクが張られてるっぽい。 "command line toolsのみだとどうなっているかは未確認 let g:clang_library_path="/usr/lib" endif let g:clang_user_options = '-std=c++11'
vimrcはこんな感じ。あとはNeocomplcacheの設定とかはお好みでやる。
次に、clang_completeが見るための設定ファイル~/.clang_complete
を作成する。中身はこれまた適当。
-DDEBUG -include ../config.h -I/usr/include/c++/4.2.1/ -F/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.8.sdk/System/Library/Frameworks/
現在、Cの知識がほぼ皆無なので割と適当になってるが、オプションやらをg:clang_user_options
や.clang_complete内で設定出来る。
その他細かい部分はclang_completeのドキュメントを参照。
注: libclangに関して、mac以外はよくわからないが、例えばubuntuだとapt-getで別途落としてくる必要があったりするらしい。