neovimでLSP環境を最低限で設定する(Windowsでプラグイン1個のみ)

vim使って色々やっていこうと思うと、避けられない設定関係の一つがLSP関連。
補完もチェックもいろいろとやってくれるセットなんだけど、よく説明されている内容を確認しても大量のプラグインがそれぞれ勝手に動いて、自分でコントロールできてない感じがなじめない。 neovimにはLSPが内蔵しているのに、色々とプラグインいれるのが前提になっているのが、納得できず設定しても使えない状況が続いたため、最低限の設定でLSPが動くのを確認していくことを優先して設定を行うことにした。

1.プラグインの追加

nvim-lspconfig 一択
他のプラグインは今後使うかもしれないが、今回は自分が把握できるようにするため、これだけでLSP環境を構築する。

ちなみに、これを入れるのは、LSP関連のコマンドが使えるようにするためと、言語を追加する設定を楽にするためとLsp関連のコマンドが使えるようにするため。
(↑の内容は自分で納得できたみたい。)

github.com

追加方法は .config内のプラグインを管理しているフォルダにファイルを追加
自分の場合は~/.config/nvim/lsp/pluginsフォルダにlsp.luaを作成

return{
    'neovim/nvim-lspconfig',
    config = function()
        local lspconfig = require('lspconfig')
        lspconfig.pyright.setup{}
    end,
}

設定内容はこれだけ。内容を説明すると、
2行目:Lazyでインストールするプラグインの指定
4行目:lspconfigの呼び出し
5行目:LSPクライアントのpyrightの指定

2.LSPサーバー用のソフトをインストール

この作業はmason.nvimを使えば自動でやってくれる内容
中身を把握するために、自分でやってみる。
LSPを利用するために何が必要なのかは

nvim-lspconfig/doc/server_configurations.md at master · neovim/nvim-lspconfig · GitHub

に言語ごとに記載がある。
ちなみにnvmにおいて
:help lspconfig-all
でも読めるとのこと。
ここでPythonのLSPサーバを探すとPyの項目にいくつかある。今回は記事が多かったPyrightを使ってみる。(これで対応がなれたらRuffにもチャレンジしてみるつもり)
PyrightはPythonのモジュール以外にnodeのモジュールとして使えるものがあり、そちらを使うのが基本みたい。
参考にしたのは、lsp-configのページのquickstartの項目
GitHub - neovim/nvim-lspconfig: Quickstart configs for Nvim LSP pyrightをインストールするために下記コマンドを実行するんだけど、windowsでnpmコマンドを実行するために

winget install OpenJS.NodeJS.LTS

を実行すればいい。 この後に

npm i -g pyright

とすることで、LSPから利用可能なpyrightがインストール。 pyrightを利用することは最初のlsp.luaの5行目ですでに書いているので、pythonファイルをneovimで編集するとLSPが実行される環境ができた。

どんな感じになるか、キャプチャ画面を貼り付けた。

LSPのテスト

モジュールを読み込まずに円の面積を求めようとして、インサートモードを抜けるとLSPによるチェックが行われるのが、確認できる

LSPが使えることは分かったので、次はLSPによる補完を試してみる