Vimの補完プラグインcoc.nvimを導入
もともとvim-lspとasyncompleteを使っていたけれど、coc.nvimが流行ってるっぽかったので乗り換えた インストール
code:vim
Plug 'neoclide/coc.nvim', {'branch': 'release'}
Vimを開き直して:PlugInstallする
cocのプラグインのインストール
:CocInstall coc-htmlみたいに実行してインストールする
インストールしたプラグイン周りは~/.config/coc/extensions配下にインストールされる
試した言語
table:lang
言語 必要なプラグイン 外部コマンド 備考
Go coc-go gopls 移行前と同じことができるようになった
Bash coc-sh bash-language-server
Terraform なし terraform-ls
YAML coc-yaml
JSON coc-json
Python coc-pyright
SQL coc-sql
JavaScript coc-tsserver
React.js coc-tsserver
HTML coc-html style,scriptタグ内もいいかんじ
試したプラグインのリンク集
coc-pyrightについてはNode.jsがv12以上が必要だった 設定
neovimから:CocConfigと実行すると$HOME/.vim/coc-settings.jsonをNeovimで開く ~/.vim/coc-settings.jsonを自動で読み込んでくれるらしい
coc-settings.jsonに各言語のLanguageServerの設定を書く
code:~/.vim/coc-settings.json
{
"languageserver": {
"go":{
"command": "gopls",
"trace.server": "verbose",
},
"bash":{
"command": "bash-language-server",
},
"terraform":{
"command": "terraform-ls",
"initializationOptions": {},
"settings": {}
}
}
}
それぞれのプラグインが何に依存しているかを確認して依存ツールをインストールする
あとgoはファイル保存時にgoimportsされて欲しかったので以下の設定をvimrcに追加 SQL保存時にフォーマットする設定も追加
Markdown保存時にLinterの指摘を修正する設定も追加
code:vimrc
" Goでgoimportsが自動で走るようにする
autocmd BufWritePre *.go :silent call CocAction('runCommand', 'editor.action.organizeImport')
" SQL保存時にフォーマットする
autocmd BufWritePre *.sql :silent call CocAction('runCommand', 'sql.Format')
" Markdown保存時にLinterの指摘を修正する
autocmd BufWritePre *.md :silent call CocAction('runCommand', 'markdownlint.fixAll')
結果
https://gyazo.com/9713ed5fde9547f77ffe766f171b5576
保存時のgoimportsも自動でされる
https://gyazo.com/47e7064cc57076fb8092dd50ced06f0a
感想
LSPクライアントが切り替えただけで、LSPサーバの方は今までインストールしてたものが使い回せるのが活きたみたいで、移行がすごく簡単だった LSPの機能はクライアントが変わっても同じなので、基本的にできることは同じ
しかもvimrcに必要な設定やプラグイン量はかなり減った
もともとvim-lspを使っていたけれど、複数プラグインを組み合わせないといけなかった code:sh
Plug 'prabirshrestha/async.vim'
Plug 'prabirshrestha/vim-lsp'
Plug 'prabirshrestha/asyncomplete.vim'
Plug 'prabirshrestha/asyncomplete-lsp.vim'
Plug 'natebosch/vim-lsc'
それぞれのプラグイン用の設定を書かないといけなかったのをまるごと消せたので満足