https://neovim.io/doc/user/lsp.html
Neovimには組み込みのLSPクライアントがあり、luaスクリプトのvim.lspでアクセスできる。
それとは別にサードパーティのプラグインとしてLSPクライアントを実装したものがある 例: CoC.nvim, vim-lsp Vim で使える LSP クライアント各種を使った感想 - Qiita
LSPサーバーをインストールしたり、その設定を簡単に変更・管理することを目的としたプラグインも存在する 例: nvim-lspconfig
関連するプラグイン達
nvim-lsp, Builtin lsp
NeoVim組み込みのLSPクライアントのこと
nvim-lspconfig
LSPサーバーの設定を定義するプラグイン。NeoVim公式。
mason.nvim
LSPサーバー、リンター、フォーマッターをウィンドウUIからインストール・管理するプラグイン。
mason-lspconfig.nvim
nvim-lspconfigとmason.nvimをあわせて使うときに使いやすくするらしい
vim-lsp
VimScriptで実装されたLSPクライアント。NeoVimでもVimでも使える。
vim-lsp-settings
vim-lsp用の、LSPサーバーの設定をいい感じにしてくれるプラグイン
NeoVimでLSPを使う
3通り考えられる
coc.nvim
オールインワン
nvim-lsp他
次のものを組み合わせて使う
- nvim-lsp
- nvim-lspconfig
- mason.nvim
- mason-lspconfig.nvim
vim-lsp他
次のものを組み合わせて使う
- vim-lsp
- vim-lsp-settings
スニペットプラグイン
補完候補として単なるテキストではなくスニペットが提供されることがあるので、スニペットプラグインも必要になるらしい
LSPのスニペットのフォーマットはVSCodeのものと同じで、それに対応したものが必要である。 例:
- vim-vsnip
- vim-vsnip-integ - 他のプラグイン(ddc.vim、vim-lsp、nvim-lsp等)との連携
特定の言語固有の機能
rust-analyzer における
experimental/externalDocs(docs.rs を開く機能)のように、言語サーバはそれぞれ LSP の標準ではない独自の仕様を定義していることがあります。
当然それらは nvim-lsp では扱えないのでプラグインが必要になります。