
最近 vimを使ってc++のコードを書いているのですが、
補完が上手くいかないのでLSPを使った補完を導入してみました。
その時のメモです。
clangdをインストールする必要がある
clang-toolsに入っています。
(入っていなければ、clang-tools6.0とか入れてください)
$ sudo apt install clang-tools $ clangd-6.0 --version LLVM (http: //llvm .org/): LLVM version 6.0.0 Optimized build. Default target: x86_64-pc-linux-gnu Host CPU: skylake |
clangdコマンドが実行できるようになればOK
vimrcに設定を記述
いくつかのプラグインを入れる必要があります。
私はいまだにNeoBundleで管理しているので、以下のように入れます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | NeoBundle 'prabirshrestha/async.vim' NeoBundle 'prabirshrestha/vim-lsp' " 以下の2つはいらないかも... " NeoBundle 'prabirshrestha/asyncomplete.vim' " NeoBundle 'prabirshrestha/asyncomplete-lsp.vim' " いくつか設定を追記 let g:lsp_log_verbose = 1 let g:lsp_log_file = expand('~/vim-lsp.log') call lsp#register_server({ \ 'name': 'clangd', \ 'cmd': {server_info->['clangd-6.0']}, \ 'whitelist': ['c', 'cpp'], \ }) let g:asyncomplete_auto_popup = 0 let g:asyncomplete_auto_completeopt = 0 autocmd FileType cpp setlocal omnifunc=lsp#complete |
register_serverのcmdにclangdのコマンドをする必要があります。
環境ごとに設定してください。
makefileからcompile_command.jsonを生成する
補完にはcompile_command.jsonが必要なのですが、
手で作成するのは無理なのでcompiledbなるもので自動生成します。
導入
1 | $ pip3 install compiledb |
makeの際にコマンドをかまします
1 | $ compiledb make |
compile_command.jsonが生成されています。
debian (9.5)では、pip3でインストールしたcompiledbではエラーになりました。
pipでインストールしたら動作したので、エラーになった時は試してみてください。
結果
ソースを開いてからしばらくすると補完機能が動作するようになる。
参考URL
- https://mattn.kaoriya.net/software/vim/20181225235003.htm
- https://github.com/prabirshrestha/vim-lsp
- https://qiita.com/kouichi_c/items/5f047ab3a7c64277e97c
- https://clang.llvm.org/docs/ClangTools.html
課題
- 補完候補は出てくるようになったが、メソッドの引数が多いとわからなくなってしまう...
0 件のコメント :
コメントを投稿