快適にGoを書くための設定たち - 2015 Spring
インターネット上に転がってる情報は古いものも多いので,Goはじめるついでに2015年4月中旬ごろのトレンドっぽい?設定を探してみました.
なんかおかしな点や抜けてるところ等あればご教授いただけると幸いです.
\ Go! Go! /
ʕ◔ϖ◔ʔ
Goのインストール
Homebrewから.
$ brew install go
環境変数GOPATH及びPATHを設定しておく(2015/04/14 18:15 追記: GOROOTについては記事の末尾に追記したので参照されたい).
export GOPATH=$HOME/go
export PATH=$PATH:/usr/local/opt/go/libexec/bin:$GOPATH/bin
Vimの設定
インデントの設定
Goはスペースでなくハードタブでのインデントが推奨されているので,その設定を追加する.
We use tabs for indentation and gofmt emits them by default. Use spaces only if you must. - formatting | Effective Go - The Go Programming Language
~/.vim/after/ftplugin/<filetype>.vimに書くことでFileTypeごとの設定を記述できる.
set noexpandtab
set tabstop=4
set shiftwidth=4
便利コマンド
※ 注意: $GOROOT/misc/vimは消滅したらしい(参考: vim-jp » vim-go-extra を公開致します。)
ここではgoogle/vim-ft-go(Vimに取り込まれてる)と$GOROOT/misc/vimの差分になるvim-jp/vim-go-extraを導入する.
(c.f. faith/vim-go: たぶんこっちのが高機能です.お好みでどうぞ.)
vim-ft-goにはmisc/vimの一部のみが含まれています。misc/vimからは以下のコマンドが削除されました。
:Godocコマンド:Fmtコマンド:Importコマンドこれらのコマンドは Fatih Arslan 氏が提供する
vim-goにコマンド名称を変えて含まれておりますが、vim-goに含まれている syntax 等は vim のリポジトリに含まれている物と現在バッティングしています。 そこで vim-jp では上記の消えたコマンド群のみを集めたvim-go-extraというリポジトリを提供する事にしました。
- vim-jp » vim-go-extra を公開致します。
NeoBundle 'vim-jp/vim-go-extra'
以下はvim-jp/vim-go-extraの便利コマンド群.
:Godoc
パッケージとかのドキュメントを見れるgodocをVimから見れる.

:Fmt
:Import
補完
gocodeをいれる.これだけ.
$ go get -u github.com/nsf/gocode
ググってみるとexe "set rtp+=".globpath($GOPATH, "src/github.com/nsf/gocode/vim")みたいなのを.vimrcに追記してる記事が多いが,実は不要っぽい?(gocodeのREADMEにも書いてない)
構文チェック
NeoBundle 'scrooloose/syntastic'
let g:syntastic_mode_map = { 'mode': 'passive',
\ 'active_filetypes': ['go'] }
let g:syntastic_go_checkers = ['go', 'golint']
保存時にgoでのコンパイルエラーのチェック及びgolintでのlintのエラーチェックが走る.
毎回入れるプラグインとか
それっぽいShellScriptをdotfilesに書く?(c.f. izumin5210/dotfiles).
もっといい方法あれば教えて下さい.
GOROOTについて(2015/04/14 18:15 追記)
@mattn さんからはてブでご指摘があった点になります.Twitter上で非常にわかりやすく丁寧に解説してくださいました.ありがとうございました!
GOROOTmust be set only when installing to a custom location. - Installing to a custom location | Getting Started - The Go Programming Language
@izumin5210 go のバイナリには GOROOT が埋め込まれていて、それと異なる場所に置く場合には必要になります。なので brew のインストール先に従うのであれば必要は無いです。brew の指定するロケーションが気に入らない場合は GOROOT で変更可能です。
— mattn (@mattn_jp) April 14, 2015
と,いうことで本記事の例だとGOROOTは設定不要です.
@izumin5210 異なるロケーションに複数入れる場合は必須になりますが、そうでない場合は必須ではないです。 http://t.co/KWkzDqxpO7 doc の Note: 部分を読んで下さい。
— mattn (@mattn_jp) April 14, 2015
Ref
- vim-jp » vim-go-extra を公開致します。
- formatting | Effective Go - The Go Programming Language
- WEB+DB PRESS Vol.82
- Installing to a custom location | Getting Started - The Go Programming Language(2015/04/14 18:15 追記)
- You don’t need to set GOROOT, really | Dave Cheney(2015/04/14 18:35 追記)



