LoginSignup
143
133

More than 5 years have passed since last update.

【Go × Vim】 VimでGoを書く - 2015 Spring

Last updated at Posted at 2015-04-14

快適に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ごとの設定を記述できる.

.vim/after/ftplugin/go.vim
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から見れる.
vim-go-godoc-demo.gif

:Fmt

Goのフォーマット整形ツールgo fmtを実行する.
vim-go-fmt-demo.gif

:Import

パッケージのimportを挿入してくれる.
vim-go-import-demo.gif

補完

gocodeをいれる.これだけ.

$ go get -u github.com/nsf/gocode

vim-go-gocode-demo.gif

ググってみるとexe "set rtp+=".globpath($GOPATH, "src/github.com/nsf/gocode/vim")みたいなのを.vimrcに追記してる記事が多いが,実は不要っぽい?(gocodeのREADMEにも書いてない)

構文チェック

golintsyntasticを組み合わせる.

NeoBundle 'scrooloose/syntastic'

let g:syntastic_mode_map = { 'mode': 'passive',
    \ 'active_filetypes': ['go'] }
let g:syntastic_go_checkers = ['go', 'golint']

保存時にgoでのコンパイルエラーのチェック及びgolintでのlintのエラーチェックが走る.

vim-go-lint-demo.gif

毎回入れるプラグインとか

それっぽいShellScriptをdotfilesに書く?(c.f. izumin5210/dotfiles).
もっといい方法あれば教えて下さい.

GOROOTについて(2015/04/14 18:15 追記)

@mattn さんからはてブでご指摘があった点になります.Twitter上で非常にわかりやすく丁寧に解説してくださいました.ありがとうございました!

GOROOT must be set only when installing to a custom location. - Installing to a custom location | Getting Started - The Go Programming Language

と,いうことで本記事の例だとGOROOTは設定不要です.

Ref

Vim plugins

Golang packages

143
133
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
143
133