NeovimでGoの環境構築

NeovimでGoの環境構築

経緯

仕事で Go を書く機会があった。一時的であれば VS Code などでちゃちゃっと終わらせようかと思ったが、今後も書く機会がありそうだったので Neovim で構築していく。

対象環境

Go をインストールする

公式からインストールでも良いが、私の Windows 環境では Scoop でいろいろと管理しているため GoScoop でインストールする。

Go | Scoop

scoop bucket add main
scoop install main/go

ちなみに Scoop のインストールもコマンドで簡単に出来る。

Scoop

Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser
Invoke-RestMethod -Uri https://get.scoop.sh | Invoke-Expression

gopls をインストールする

Neovim の設定もだが、まずは gopls をインストールする。

go install golang.org/x/tools/gopls@latest

インストールチェック

gopls version
golang.org/x/tools/gopls v0.17.1

gopls のインストール完了した。

coc-settings.json を編集

coc-go はインストールせずに、 coc-settings.json に言語設定を記述する方法を採用。
gopls のドキュメントにも書かれている。

gopls | GitHub

{
  "languageserver": {
    "golang": {
      "command": "gopls",
      "rootPatterns": ["go.work", "go.mod", ".vim/", ".git/", ".hg/"],
      "filetypes": ["go"],
      "initializationOptions": {
        "usePlaceholders": true
      }
    }
  }
}

coc-go でもセットアップ出来るらしいが、 gopls 公式ドキュメントに書かれている方法を採用した。

init.lua を編集

使いやすくするための設定として以下を init.lua に追加した。

vim.cmd("autocmd BufWritePre *.go :call CocAction('runCommand', 'editor.action.organizeImport')")

これで環境構築完了!

Neovim に標準のLSP環境が出来てからあまり聞かなくなった coc.nvimcoc.nvim で調べても3年前とか4年前の記事が多い…
Neovim 標準のLSPでオールインワンなプラグイン出ないかなぁ。