🎼

Vim で Go を書く環境を整えた

2021/10/08に公開

最近「Go言語でつくるインタプリタ」本を写経しています。Go はチュートリアルをやったくらいの初心者なもんで、並行して開発環境も作りながら進めています。

https://www.oreilly.co.jp/books/9784873118222/

なにはともあれ LSP の設定から

いま開発環境作るなら、LSP ですよね。自分は CoC を使っています。だから :CocInstall coc-go して完了!お手軽!と思いきや、なにげにそのままだと動きませんでした。なんということでしょう…。

https://github.com/neoclide/coc.nvim

https://github.com/josa42/coc-go/

gopls を入れる

そう、coc-go をインストールしただけでは動かなかったのです。Go 用の Language Server も、別途自分で用意しないといけません。幸いにも、coc-go をインストールしたら gopls をインストールするコマンドが使えるようになります。便利。

:CocCommand go.install.gopls

これ実行するだけで、私の環境だと ~/.config/coc/extensions/coc-go-data/bin/gopls にインストールされ、無事に LSP 環境が構築できました。

coc-go を使う前は辞書補完のみでしたが、LSP 由来の補完が使えるようになったのですごくコードを書くスピードが速くなりました!

Diagnostics でエラーがすぐわかるのも最高に便利です。ドキュメントも参照できるようになったので、定義元にジャンプできるしテストファイルと実装ファイルを行き来しやすくなったし、LSP 大好きです。

ファイル保存時に go fmt する

Go の場合は go fmt してないコードはコミットしたくない気持ちになりますよね。coc-settings.json に設定をしておくと、ファイルの保存時に go fmt してくれるようになるので必須かと思います。

:CocConfig コマンドで設定値を編集できます。

{
  "coc.preferences.formatOnSaveFiletypes": [
     "go"
  ]
}

てな感じで、快適になりました。

Discussion