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

最近 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

課題

  • 補完候補は出てくるようになったが、メソッドの引数が多いとわからなくなってしまう...

0 件のコメント :

コメントを投稿