
NeovimでGoの環境構築
- 日本語
- Neovim
- Go
- coc.nvim
経緯
仕事で Go を書く機会があった。一時的であれば VS Code などでちゃちゃっと終わらせようかと思ったが、今後も書く機会がありそうだったので Neovim で構築していく。
対象環境
Go をインストールする
公式からインストールでも良いが、私の Windows 環境では Scoop でいろいろと管理しているため Go も Scoop でインストールする。
{{ card(title=“Go | Scoop”, url=“https://github.com/ScoopInstaller/Main/blob/master/bucket/go.json”) }}
scoop bucket add main
scoop install main/go
ちなみに Scoop のインストールもコマンドで簡単に出来る。
{{ card(title=“Scoop”, url=“https://scoop.sh”) }}
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 のドキュメントにも書かれている。
{{ card(title=“gopls | GitHub”, url=“https://github.com/golang/tools/blob/master/gopls/doc/vim.md#cocnvim”) }}
{
"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.nvim 。
coc.nvim で調べても3年前とか4年前の記事が多い…
Neovim 標準のLSPでオールインワンなプラグイン出ないかなぁ。