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