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等)との連携

特定の言語固有の機能

https://zenn.dev/nazo6/articles/c2f16b07798bab#%E7%89%B9%E5%AE%9A%E3%81%AE%E8%A8%80%E8%AA%9E%E7%B3%BB

rust-analyzer におけるexperimental/externalDocs(docs.rs を開く機能)のように、言語サーバはそれぞれ LSP の標準ではない独自の仕様を定義していることがあります。
当然それらは nvim-lsp では扱えないのでプラグインが必要になります。


"上"のページ: Neovim, LSP