Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
135
Help us understand the problem. What is going on with this article?
@izumin5210

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

More than 5 years have passed since last update.

快適に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

135
Help us understand the problem. What is going on with this article?
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
izumin5210
ʕ ◔ϖ◔ʔ < I'm a Rubyist.
wantedly
「シゴトでココロオドル」ためのビジネスSNS「Wantedly」の開発・運営をしています。

Comments

No comments
Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account Login
135
Help us understand the problem. What is going on with this article?