Quantcast
Channel: Vimタグが付けられた新着記事 - Qiita
Viewing all articles
Browse latest Browse all 5608

C/C++の補完プラグインをclang_completeからvim-clangに乗り換えた

$
0
0

以前までは clang_completeを使っていたけど、vimをpython2.7対応でビルドしないといけなかったり、設定がわりと面倒だったりしていた。そこで前々からチェックしていた後発の vim-clangに乗り換えることにした。

あとは江添さんも乗り換えたという記事を見たのもある。
本の虫: vim-clang: clangを使ったC++の静的補完Vimプラグイン

それぞれの特徴

clang_complete

  • libclangを使用する
  • libclangとの連携にpythonを使用。vimがpython2.7に対応している必要がある(python3使いたい時に不便)
  • 一時期開発が止まっていたが最近は有志の人が引き継いで更新されている
  • neocompleteと共存可能

vim-clang

  • pythonには依存していない
  • clangの実行ファイルを使用する
  • libclangには対応していない(でもそこまで遅い感じではない)
  • clang-formatの実行にも対応している
  • neocompleteと共存可能

その他

他にも有名どころとしてはYouCompleteMeなどがあるが、neocompleteと共存できないような気がする(未検証)。

設定例(Linux向け)

インストール(NeoBundleを使用、詳細は省略)

neobundle.toml
# complete[[plugins]]repository='Shougo/neocomplete.vim'depends=['Shougo/neoinclude.vim', 'Shougo/context_filetype.vim']insert=1# C/C++[[plugins]]repository='justmao945/vim-clang'filetypes=['c', 'cpp']

neocompleteとvim-clangの設定例

" 'Shougo/neocomplete.vim' {{{letg:neocomplete#enable_at_startup =1if!exists('g:neocomplete#force_omni_input_patterns')letg:neocomplete#force_omni_input_patterns = {} 
endifletg:neocomplete#force_overwrite_completefunc =1letg:neocomplete#force_omni_input_patterns.c=
      \ '[^.[:digit:] *\t]\%(\.\|->\)\w*'letg:neocomplete#force_omni_input_patterns.cpp =
      \ '[^.[:digit:] *\t]\%(\.\|->\)\w*\|\h\w*::\w*'" }}}"" 'justmao945/vim-clang' {{{" disable auto completion for vim-clangletg:clang_auto =0" default 'longest' can not work with neocompleteletg:clang_c_completeopt   ='menuone'letg:clang_cpp_completeopt ='menuone'if executable('clang-3.6')letg:clang_exec ='clang-3.6'elseif executable('clang-3.5')letg:clang_exec ='clang-3.5'elseif executable('clang-3.4')letg:clang_exec ='clang-3.4'elseletg:clang_exec ='clang'endifif executable('clang-format-3.6')letg:clang_format_exec ='clang-format-3.6'elseif executable('clang-format-3.5')letg:clang_format_exec ='clang-format-3.5'elseif executable('clang-format-3.4')letg:clang_format_exec ='clang-format-3.4'elseletg:clang_exec ='clang-format'endifletg:clang_cpp_options ='-std=c++11 -stdlib=libc++'" }}}

その他、詳細は vim-clangのドキュメントを参照して下さい。

筆者のvimrc

koara-local/dotvim

参考

Rip-Rip/clang_complete
justmao945/vim-clang


Viewing all articles
Browse latest Browse all 5608

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>