はじめに
nvimを使い始めて一年ほど、deoplete の後継プラグインが出たということで、さっそく試してみた。
ddc.vim とは
暗黒美夢王ことShougoさんが作成した vim, neovim の自動補完プラグイン。
deoplete.nvim の後継でneovim, vim 両対応、Python非依存、処理の高速化などの改良がされた。
新世代の自動補完プラグイン ddc.vim (https://zenn.dev/shougo/articles/ddc-vim-beta)
実行環境
- Ubuntu 20.04.3 LTS (WSL2)
- shell: zsh 5.8
- Neovim v.0.6.1
- プラグイン管理:vim-plug
手順
deopleteの無効化
便宜上コメントアウト
call plug#begin('~/.local/share/nvim/plugged')
"Plug 'shougo deoplete.nvim'
call plug#end()
"let g:deoplete#enable_at_startup = 1
:PlugClean
依存関係
denoのインストール
ddc はDeno と呼ばれるNodeJSに似た言語の環境が必要。
Ubuntu以外の環境 → denoland/deno_install
apt install unzip -y
curl -fssL https://deno.land/install.sh | sh
Error: unzip is required to install Deno
のようなエラーが出たら
apt install unzip -y
でunzip をインストールする
export DENO_INSTALL="/home/$USER/.deno"
export PATH="$DENO_INSTALL/bin:$PATH"
シェルがbashならbashrc
source ~/.zshrc
deno -V
nvim のアップデート
ddc はneovim のv0.5以上が必要。
記事執筆時点では通常のapt install
ではそれに満たなかったため、PPTを用いた。
https://github.com/neovim/neovim/wiki/Installing-Neovim#ubuntu
sudo add-apt-repository ppa:neovim-ppa/stable
sudo apt update
sudo apt update neovim
nvim -v
>> NVIM v0.6.1
ddcと関係するプラグインの導入
README に従って、source や filter などの設定を書き込む
これでとりあえず動く。キーバインドなどは省略。
Shougo/ddc.vim
call plug#begin('~/.local/share/nvim/plugged')
Plug 'Shougo/ddc.vim'
Plug 'vim-denops/denops.vim'
Plug 'Shougo/ddc-around' " sources
Plug 'Shougo/ddc-matcher_head' " filters
Plug 'Shougo/ddc-sorter_rank' " filters
call plug#end()
" Use around source.
call ddc#custom#patch_global('sources', ['around'])
" Use matcher_head and sorter_rank.
call ddc#custom#patch_global('sourceOptions', {
\ '_': {
\ 'matchers': ['matcher_head'],
\ 'sorters': ['sorter_rank']},
\ })
" Use ddc
call ddc#enable()
LSPの導入
neovim のv0.5 以降にはLSPクライアントが入っているのでそれを使ってみる。
ddc-nvim-lsp のREADME に従って設定を記述した。
Shougo/ddc-nvim-lsp
call plug#begin('~/.local/share/nvim/plugged')
"Plug 'lighttiger2505/deoplete-vim-lsp'
"Plug 'prabirshrestha/vim-lsp'
"Plug 'mattn/vim-lsp-settings'
Plug 'neovim/nvim-lspconfig'
Plug 'Shougo/ddc-nvim-lsp'
call plug#end()
call ddc#custom#patch_global('sources', ['nvim-lsp'])
call ddc#custom#patch_global('sourceOptions', {
\ '_': { 'matchers': ['matcher_head'] },
\ 'nvim-lsp': {
\ 'mark': 'lsp',
\ 'forceCompletionPattern': '\.\w*|:\w*|->\w*' },
\ })
以前はvim-lsp を使用していたため、適宜無効化しておく。
vim-lsp が nvim-lsp(builtin)、nvim-lspconfig が vim-lsp-settings に相当するのかな
language server を使用するには別途記述が必要。nvim-lspconfig のREADMEを参照。
neovim/nvim-lspconfig
終わりに
deoplete の時と遜色なく動く。python 非依存なので再構築の時楽になると思う。(pyenv-virtualenvとか使ってた人)