vim8,neovimで補完使うならdeopleteよりvim-lsp使おうぜ
vscodeのMicrosoftが作ったC++拡張機能にはLanguage Server Protocol(LSP)という技術が使われています
LSPは他の言語にももちろん対応しています(C#のOmniSharpとか)
これが補完などの処理を行ってくれます
neovimのC++補完
今まで僕は,deoplete-clangやdeoplete-xclangを使ってきましたが,
「(多分)毎回"clang"の呼び出しを行っているのが原因で補完などの動作がvscodeに比べて遅い」
印象を受けていました
vimでもLSPを使うものが無いかと調べると出てきました
(作ってる人がMicrosoftの方)
ここを見れば簡単に導入できると思います
install
まずclangdをインストールします
sudo pacman -S llvm clang-tools-extra
deinを使ってインストールしています(それぞれの環境に合わせてインストールしてください><)
[[plugins]] repo='prabirshrestha/async.vim' [[plugins]] repo='prabirshrestha/vim-lsp' hook_add=''' if executable('clangd') au User lsp_setup call lsp#register_server({ \ 'name': 'clangd', \ 'cmd': {server_info->['clangd']}, \ 'whitelist': ['c', 'cpp', 'objc', 'objcpp'], \ }) endif let g:lsp_signs_enabled = 1 " enable signs let g:lsp_diagnostics_echo_cursor = 1 " enable echo under cursor when in normal mode let g:lsp_signs_error = {'text': '✗'} let g:lsp_signs_warning = {'text': '‼'} <i></i> ''' [[plugins]] repo='prabirshrestha/asyncomplete.vim' [[plugins]] repo='prabirshrestha/asyncomplete-lsp.vim' [[plugins]] repo='prabirshrestha/asyncomplete-neosnippet.vim' hook_add=''' call asyncomplete#register_source(asyncomplete#sources#neosnippet#get_source_options({ \ 'name': 'neosnippet', \ 'whitelist': ['*'], \ 'completor': function('asyncomplete#sources#neosnippet#completor'), \ })) imap <C-k> <Plug>(neosnippet_expand_or_jump) smap <C-k> <Plug>(neosnippet_expand_or_jump) xmap <C-k> <Plug>(neosnippet_expand_target) '''
補完
Rename
エラー表示
vim-lsp + clangdの恐るべきエラー表示の速さ(obsで撮ったら色落ちした) pic.twitter.com/05aJ7xZEas
— おもちもちもちくちもちとくら (@Kutimoti_T) May 20, 2018
bits/stdc++11.hをインクルードしても全く重くならなかったのですごい(すごい)
他にもコマンドはあるのでぜひ使ってみてください