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

vim-clang でC/C++のコードを補完する(入力時に自動表示).

$
0
0

はじめに

素人です.Vim でC/C++のコードを補完する手順をメモしておきます.C/C++の補完プラグインをclang_completeからvim-clangに乗り換えたの記事を主に参考にさせていただきました.

構文解釈には高速と言われるC++コンパイラclang派生のclang-formatを利用し,Vim側からvim-clangを経由させて使用するようです.

clangのインストール

当たり前ですが,これが入っていないとモジュールがないって怒られます.

sudo apt-get clang-3.5
sudo apt-get clang-format-3.5

プラグインのインストール

vim-clangを経由して候補を検索します.自動補完はneocompleteを使います.
neocompleteを使って非同期で表示させるので,vimprocを使います.念の為,書いておきます.

NeoBundle 'Shougo/neocomplete.vim'
NeoBundle 'Shougo/vimproc.vim', {
            \ 'build' : {
            \ 'windows' : 'make -f make_mingw32.mak',
            \ 'cygwin' : 'make -f make_cygwin.mak',
            \ 'mac' : 'make -f make_mac.mak',
            \ 'unix' : 'make -f make_unix.mak',
            \ },
            \ }
NeoBundle 'justmao945/vim-clang'
NeoBundle 'Shougo/neoinclude.vim'

.vimrcの設定

C/C++の補完プラグインをclang_completeから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]\%(\.\|->\)'letg:neocomplete#force_omni_input_patterns.cpp ='[^.[:digit:] *\t]\%(\.\|->\)\|\h\w*::'"""}}}" 'justmao945/vim-clang' {{{" disable auto completion for vim-clanGletg:clang_auto =0letg:clang_complete_auto =0letg:clang_auto_select =0letg:clang_use_library =1" 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_c_options ='-std=c11'letg:clang_cpp_options ='-std=c++11 -stdlib=libc++'" }}}

おわりに

force_omni_input_patterns の規約を理解していませんが,とりあえずこれでそれっぽく補完されているので,良しとしておきます..

参考文献


Viewing all articles
Browse latest Browse all 5608

Trending Articles



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