[Vim] LSPを使ってC++の補完を強化する

最近 vimを使ってc++のコードを書いているのですが、 補完が上手くいかないのでLSPを使った補完を導入してみました。 その時のメモです。 ## clangdをインストールする必要がある clang-toolsに入っています。 (入っていなければ、clang-tools6.0とか入れてください) ```bash `gutter:false; $ 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で管理しているので、以下のように入れます。 ``` 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なるもので自動生成します。 ### 導入 ``` $ pip3 install compiledb ``` makeの際にコマンドをかまします ``` $ 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 件のコメント :

コメントを投稿