ddc.vimとvim-lspを使って自動補完機能を設定する

はじめに

Vimには標準で自動補完機能が備わっていません。したがって手動でLSPを導入したり、補完候補が表示されるように設定をする必要があります。

今回はvim-lspという非同期LSPを行うVimプラグインと、LSPの設定を簡易にしてくれるvim-lsp-settingsというプラグイン、そして自動補完の設定を行うddc.vimというプラグインを導入していきます。

vim-lspに関しては自動補完以外にも定義ジャンプなど便利な機能もあるようですが、これについては別の機会にまとめようと思います。

Denoインストール

ddc.vimがDenoで開発されているらしく、まずはDenoのインストールから行います。

$ brew install deno

Vimプラグインインストール

次に各Vimプラグインのインストールを行います。.vimrcに下記を記述してVimプラグインをインストールして下さい。

"" ddc.vim本体
Plug 'Shougo/ddc.vim'
"" DenoでVimプラグインを開発するためのプラグイン
Plug 'vim-denops/denops.vim'
"" ポップアップウィンドウを表示するプラグイン
Plug 'Shougo/pum.vim'
"" カーソル周辺の既出単語を補完するsource
Plug 'Shougo/ddc-around'
"" ファイル名を補完するsource
Plug 'LumaKernel/ddc-file'
"" 入力中の単語を補完の対象にするfilter
Plug 'Shougo/ddc-matcher_head'
"" 補完候補を適切にソートするfilter
Plug 'Shougo/ddc-sorter_rank'
"" 補完候補の重複を防ぐためのfilter
Plug 'Shougo/ddc-converter_remove_overlap'
"" Install your UIs
Plug 'Shougo/ddc-ui-native'
Plug 'shun/ddc-vim-lsp'

※Vimプラグインのインストール方法が分からない場合はこちらをご参考下さい。

LanguageServerインストール

今回はvim-lsp-settingsを使って試しにPythonのLanguageServerをインストールしてみます。コマンドモードで下記のExコマンドを実行して下さい。

:LspInstallServer pylsp-all

インストールされたか下記のコマンドで確認して下さい。隣に「*」が付いていればインストール済みということになります。

※ちなみにLspManageServersコマンドからでもLanguageServerのインストールは可能です。

:LspManageServers

インストールされた実際のスクリプトはMacの場合は下記の場所にダウンロードされています。

$ ls ~/.local/share/vim-lsp-settings/servers
pylsp-all

ddc.vimの設定

.vimrcに下記の設定を追記して下さい。

"" ddc.vim
call ddc#custom#patch_global('ui', 'native')
call ddc#custom#patch_global('completionMenu', 'pum.vim')
call ddc#custom#patch_global('sources', [
 \ 'around',
 \ 'vim-lsp',
 \ 'file',
 \ 'pylsp-all',
 \ ])
call ddc#custom#patch_global('sourceOptions', {
 \ '_': {
 \   'matchers': ['matcher_head'],
 \   'sorters': ['sorter_rank'],
 \   'converters': ['converter_remove_overlap'],
 \ },
 \ 'around': {'mark': 'Around'},
 \ 'vim-lsp': {
 \   'mark': 'LSP', 
 \   'matchers': ['matcher_head'],
 \   'forceCompletionPattern': '\.|:|->|"\w+/*'
 \ },
 \ 'file': {
 \   'mark': 'file',
 \   'isVolatile': v:true, 
 \   'forceCompletionPattern': '\S/\S*'
 \ }})
call ddc#enable()

以上で設定は完了です。

動作確認

適当なPythonファイルを開いてきちんと動作しているか確認してみます。

LSPから補完候補がサジェストされていれば成功です。

終わりに

次は定義ジャンプの設定を行いたいと思います。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA