タオルケット体操

サツバツいんたーねっと

C++書くにあたってVimで最低限準備したこと(殴り書き)

必要にかられて。
そして賢い補完なしのコーディング生活は嫌なので。

そして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で別途落としてくる必要があったりするらしい。

参考: http://d.hatena.ne.jp/osyo-manga/20120911/1347354707