Vim YouCompleteMe - eiichiromomma/CVMLAB GitHub Wiki
Vim) YouCompleteMe
(様々な言語に対応した補完機能Plugin
Macでの注意
homebrewでHEADを使う場合
brew install --HEAD --with-gettext --with-override-system-vi vim
でvimをHEADで入れる。
MacVimを使う場合
Homebrewのvimはダメなのでアンインストールしておく。
MacVim kaoriya版をインストールして/usr/local/binにシンボリックリンクを貼る
sudo ln -s /Applications/MacVim.app/Contents/MacOS/Vim /usr/local/bin/vim
.bash_profileに
export VIMRUNTIME=/Applications/MacVim.app/Contents/Resources/vim/runtime/
を追加
source ~/.bash_profile
マネージャでのセットアップ
色々とサイトにやり方が出ているが手っ取り早い導入は**Vuldleを使う**。
Vundleの場合(かんたん)
.vimrcのvundle#begin()の後に
Plugin 'Valloric/YouCompleteMe'
let g:ycm_confirm_extra_conf = 0
を入れてvimを起動し
:PluginInstall
vimを終了して
cd ~/.vim/bundle/YouCompleteMe/
python ./install.py --clang-completer --system-libclang
--system-libclangはシステムのclagを使うオプション。付けないとclangのビルドが始まる。
NeoBundleの場合(面倒)
~/.vimrcにVundleVim/Vundle.vimを追加して起動しインストール。作業が不十分なので
cd .vim/bundle/YouCompleteMe/
git submodule update --init --recursive
python ./install.py --clang-completer --system-libclang
echo let g:ycm_global_ycm_extra_conf = \'~/.vim/bundle/YouCompleteMe/third_party/ycmd/cpp/ycm/.ycm_extra_conf.py\' >> ~/.vimrc
で導入完了。
その後の設定
サーチパス
ヘッダファイルのサーチパスを増やしたい場合は~/.vim/bundle/YouCompleteMe/third_party/ycmd/cpp/ycm/.ycm_extra_conf.pyを編集する。
vim ~/.vim/bundle/YouCompleteMe/third_party/ycmd/cpp/ycm/.ycm_extra_conf.py
で/usr/local/include/pcl-1.8を加えたい場合は
'-I',
'.',
'-I',
'./ClangCompleter',
となっている所に続けて-Iとペアで加える。
'-I',
'.',
'-I',
'/usr/local/include/pcl-1.8',
'-I',
'./ClangCompleter',
という感じ。
ビルドオプションの反映(CMake)
CMakeLists.txtに
set (CMAKE_EXPORT_COMPILE_COMMANDS ON)
を書いてからcmakeすると、ビルドオプションを書き出してくれる。YouCompleteMeはそれを勝手に使ってくれる。
.vimrcに加えたオプション
最初のはjedi-vimを使うため。次がC++でusing namespaceでも補完できるようにする設定。最後はビルドオプションが不定のときの振舞。
let g:ycm_filetype_specific_completion_to_disable = {
\ 'python': 1
\}
let g:ycm_semantic_triggers = {
\ 'c' : ['->', '.','re![_a-zA-z0-9]'],
\ 'objc' : ['->', '.', 're!\[[_a-zA-Z]+\w*\s', 're!^\s*[^\W\d]\w*\s',
\ 're!\[.*\]\s'],
\ 'ocaml' : ['.', '#'],
\ 'cpp,objcpp' : ['->', '.', '::','re![_a-zA-Z0-9]'],
\ 'perl' : ['->'],
\ 'php' : ['->', '::'],
\ 'cs,java,javascript,typescript,d,python,perl6,scala,vb,elixir,go' : ['.'],
\ 'ruby' : ['.', '::'],
\ 'lua' : ['.', ':'],
\ 'erlang' : [':'],
\ }
let g:ycm_confirm_extra_conf = 0