LoginSignup
22
18

More than 3 years have passed since last update.

vim-goを使ってみた

Last updated at Posted at 2019-06-14

GoをVimで書こうとした時には、プラグインを入れたくなります。
Vimのプラグインであるvim-goである程度困らない環境を構築していきます。

前提環境

elements version
go version go1.12.6 darwin/amd64
OS MacOS Mojave 10.14.5
Vim VIM - Vi IMproved 8.1

GOPATHなどは通しておいてください。

とりあえずインストール

vim-goをインストールします。
NeoBundleVundle、vim scriptでインストールしても良いですが、
ここではvim-goのレポジトリに書いてある手順でインストールしていきます。

と言っても、git cloneするだけです。

$ git clone https://github.com/fatih/vim-go.git ~/.vim/pack/plugins/start/vim-go

vimを再起動して、:GoPathなどのコマンドが使えれば完了です。

エラーの対応

goplsが見つからない

Vimを再起動し、.goのファイルを開くと、次のようなエラーが出ました。

vim-go: could not find 'gopls'. Run :GoInstallBinaries to fix it
Errorr detected while processing function <SNR>36_register[5]..go#lsp#DidOpen

対応

素直に:GoInstallBinariesを実行します。
一部のツール(gurugoimportsなど)が既にインストールされている場合は:GoUpdateBinariesも実行します。

tools/cmd/goplsがダウンロードできない

どうして。

対応

色々と調べてみると、どうやら元々入っていたGoのバージョンが果てしなく古かったためでした。12.6ではダウンロードできました。
最新のバージョンを使いましょう。

Features that rely on gopls will not work correctly outside of GOPATH or a module

対応

今だに原因究明できていませんが、go listコマンドが失敗するとこのようなエラーが出る場合があるそうです。

エラーの内容通り$GOPATH配下でないと正常に動作しません。
対象ファイルを$GOPATH配下に移動させた上で再度vimで開いてみると、エラーは消えるはずです。

もし、それでも消えない場合は握りつぶすことも可能です。

let g:go_null_module_warning = 0

テンプレートを消したい

なにも設定していないと新しいGoファイルを作成した時にテンプレートが吐き出されるが正直なくていいなと感じました。

package main

import "fmt"

func main() {
    fmt.Println("vim-go")
}

対応

以下のコマンドで消せます。

let g:go_template_autocreate = 0

保存が遅すぎる

対応

vim-go: initialize goplsと表示される場合はgoplsが初期化する時に時間がかかっている場合があります。
しばらく待ってから一度、GoUpdateBinaries goplsで直接アップデートして再度保存を試みてください。

そうでない場合は、goimports(パッケージのimportの削除や追加をよしなにやってくれるツール)やgofmt(フォーマットしてくれるツール)の影響やsyntastic(保存時にLintとかやってくれるツール)の影響が大きいことが考えられます。

次のコマンドで、設定を変更します。

let g:go_fmt_command = "gofmt"
let g:syntastic_go_checkers = ['golint', 'govet', 'errcheck']

おわりに

快適なGoライフを!!

参考

22
18
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
22
18