VimでGoの開発環境を設定する方法のまとめ

  • 85
    いいね
  • 0
    コメント
この記事は最終更新日から1年以上が経過しています。

TL;DR

本記事ではVimでのGo開発環境の構築方法をまとめる。

基本的に以下のプラグインの使用方法についてのまとめになります。
fatih/vim-go: Go development plugin for Vim

情報が古くなっている可能性がありますので、まずは上記のREADMEを参照して下さい。

この記事でできること

  • *.go をGo言語と判別してくれるようにする
  • シンタックスハイライト
  • オムニ補完
  • 保存時の自動整形(go fmt)
  • 保存時の自動ビルドとquickfix
  • シンタックスチェック(重いので使ってないけど一応できる)

GOPATHの設定

*shrc
export GOPATH=${HOME}/go

現在はGOROOTは指定する必要はないようです
今回はホームディレクトリにgoというディレクトリを作成してそこをGOPATHに指定しました

fish-shellを使用している方は後述する vim-go の README に補足が書いてあるのでそちらを参照して下さい

vimrcの設定

Go言語用のオールインワンプラグインを作っている方がいるので、使わせて頂きます

fatih/vim-go

プラグインの導入方法詳細は割愛して、例えばNeoBundleだと以下のように設定します

vim-goの導入
NeoBundle 'fatih/vim-go'

少なくとも自分の今の環境だと*.goを自動でGo言語だと判別してくれないようです(最新にパッチが当たっているかは未調査)
vim-goは拡張子の判別も含んでいるため、とりあえず上記のように設定すればよいと思います
*.goの拡張子の判別設定を自分でやっているのなら、以下のようにLazy化してもいいかもしれないです(動作未確認)

lazy化
NeoBundleLazy 'fatih/vim-go', {
            \ 'autoload' : { 'filetypes' : 'go'  }
            \ }

必要パッケージのインストール

vim-go が依存しているパッケージをインストールします
vimを起動後 以下のコマンドを実行してください

vim-go依存パッケージのインストール
:GoInstallBinaries

GitMercurial に依存してるらしいので、入っていない場合は先にパッケージを入れておくのをおすすめします

ubuntuでの例
sudo apt-get install git mercurial

あとはお好みで vim-go の設定を追記して下さい
自分は今のところ以下の設定のみ足しています

vim-goの設定例
let g:go_highlight_functions = 1
let g:go_highlight_methods = 1
let g:go_highlight_structs = 1

他の設定に関してはvim-goやその他の依存プラグインの README を参照して下さい

シンタックスハイライト

上記の設定ができていれば、シンタックスハイライトが有効になっているはずです

追加で err のハイライトも足しておくとより捗るらしいです
"err"という文字列をHighlightしておくとGolangのコードリーディングが捗る

オムニ補完

上記の設定ができていれば、C-x C-oでオムニ補完ができるはずです

neocompleteで自動補完する場合は以下のように設定しました

let g:neocomplete#sources#omni#input_patterns.go = '\h\w\.\w*'

※githubのパッケージの補完が効かない場合の件について、記事末尾の補足に追記しました

コード整形

上記の設定ができていれば、保存時に go fmt が自動で実行されるはずです

ビルドとquickfixの利用

以下のコマンドを利用して下さい

:GoBuild

シンタックスチェック有効化

syntasticを使えば特に設定することなくシンタックスチェックを有効化できます
ただ、大きいパッケージを入れるととたんに重くなるので、vim-watchdogsとかの導入も検討して下さい(設定方法未調査)

シンタックスチェックプラグイン
NeoBundle 'scrooloose/syntastic'

補足

Githubからgo getしてきたパッケージの補完が効かない

以下を試してみてください

cd ${GOPATH}/src/github.com
go build -v ./... && go install ./...

正確なところは未調査ですが、どうやら補完のためには ${GOPATH}/pkg 以下にバイナリがインストールされてる必要があるようです

Vim 内でのGOPATHの設定?

設定方法を調べている際、ブログ等で以下のように設定している方が多いようでしたが、
vim-goのReadmeにも見られなかったし、設定しなくても実際の動作は影響しませんでした

必要?
exe "set rtp+=".globpath($GOPATH, "src/github.com/nsf/gocode/vim")

以前は必要だったのか、bashrc等に書いていれば必要ないのかは未調査