Ubuntu18.04でneovim(or vim8)+LanguageClient-neovim+clangdでC++の補完をする
普段はMacで使ってますが,TwitterでUbuntuで上手くいかなかった人がいるみたいなのでやってみました.
必須なやつ
- neovim or vim(v8以上必須)
- dein.vim(プラグインマネージャ)
- clangd(Microsoft社が定めたLanguageServerProtocolという補完用プロトコルに沿ったサーバ側のプログラム)
- LanguageClient-neovim(Microsoft社が定めたLanguageServerProtocolという補完用プロトコルに沿ったクライアント側のプラグイン)
- deoplete.nvim(非同期補完用プラグイン)
インストール手順
dein.vimとneovimのインストール手順は省きます.(他に書いてる人がたくさんいるので)
clangd
clangも一緒にインストールしておきます
sudo apt install clang-6.0 clang-tools-6.0 sudo update-alternatives --install /usr/bin/clang++ clang++ /usr/bin/clang++-6.0 100 sudo update-alternatives --install /usr/bin/clang clang /usr/bin/clang-6.0 100 sudo update-alternatives --install /usr/bin/clangd clangd /usr/bin/clangd-6.0 100
LanguageClient-neovim
tomに書いてください.tomlに書いてない場合,適宜読み替えてください.
[[plugins]] repo = 'Shougo/dein.vim' # vim8用 [[plugins]] repo = 'roxma/nvim-yarp' if = "!has('nvim')" # vim8用 [[plugins]] repo = 'roxma/vim-hug-neovim-rpc' if = "!has('nvim')" [[plugins]] repo = 'Shougo/deoplete.nvim' hook_add = ''' let g:deoplete#enable_at_startup = 1 ''' [[plugins]] repo = 'autozimu/LanguageClient-neovim' rev = 'next' depends = ['deoplete.nvim'] build = 'bash install.sh' hook_add = ''' set hidden let g:LanguageClient_serverCommands = { \ 'cpp': ['clangd'], \ } let g:LanguageClient_loadSettings = 1 let g:LanguageClient_hasSnippetSupport = 0 set completefunc=LanguageClient#complete nnoremap K :call LanguageClient#textDocument_hover()<CR> nnoremap F :call LanguageClient#textDocument_formatting()<CR> '''
結果
— kurokoji (@kur0k0ji) 2018年8月16日
同様に,prabirshrestha/asyncomplete-lsp.vimを使ってもできます. これに関してはkutimoti氏が記事を書いてくれているのでどうぞ.
また,cquery-project/cqueryなどでも同様です.