最近 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 件のコメント :
コメントを投稿