SublimeText好きとしては、Go開発環境もSublimeにしたい。
前提環境
他の環境で動かなかったらゴメンナサイ。
- Mac Yosemite
- go version go1.4.2 darwin/amd64 (
brew install go
)
SublimeText3インストール & Go基本設定
そろそろSublimeText3も安定していると思います。
また、Goの基本的なインストールは済んでいるものとします。
※Goのインストール、GOPATH, GOROOTの設定 など。他の記事などをご参考に!!
Go開発環境のためのsublime text3 package
GoSublime
SublimeでGoをやるといったらまずこの総合パッケージを入れます
- Go言語シンタックス
- 各種Go関連コマンド(
gofmt
,goimports
)との連携 - パッケージインポートの補助(
command + . -> command + p
) - 他、色々。(
command + . -> command + .
でメニューがでてきます)
goimports
設定をする際にgoimports
1を入れておきましょう。
$ go get golang.org/x/tools/cmd/goimports
設定ファイル
メニュー -> Sublime Text -> Preference -> Package Settings -> GoSublime -> Settings - User
またはcommand + . -> command + 5
でも開きます。
GOPATHは自分の環境のGOPATHに合わせてください。
{
"env": {
"GOPATH": "/path/to/gopath",
"PATH": "$GOPATH/bin:$PATH"
},
"shell": ["/bin/bash", "--login", "-c", "$CMD"],
"fmt_cmd": ["goimports"],
"comp_lint_enabled": false,
}
※もしかすると、shell, GOPATH, PATHは設定不要かもしれません(未検証)。
設定値は自分の環境に合わせてください。
Godef
- GoSublime に存在する
GoToDefinition
はGsDoc: no docs found
と表示されてマトモに動かない(僕の設定の仕方が悪いだけかもしれない・・) - Packageの
Go To Definition
は、実は同じ関数名をリストアップしているだけ。自分で定義元を選ばなくてはならない
こんな状況ではIDEに匹敵する定義ジャンプとはいえないので、Godef
を導入します。
godefの導入
$ go get -v github.com/rogpeppe/godef
設定ファイル
メニュー -> Sublime Text -> Preference -> Package Settings -> GoSublime -> Settings - User
GOPATHは自分の環境のGOPATHに合わせてください。(~ とか $HOME は使えないので要注意です。)
{
"gopath": "/path/to/gopath/"
}
※プラグインの説明書きをみると、設定しなくても環境変数のGOPATH見に行くぜ!って書いてあるので、敢えて設定する必要がないかもしれません。
キーバインドの修正
command + d
をGodefへ割り当てるという暴挙にでてきますので、キーバインドを直しましょう。
メニュー -> Sublime Text -> Preference -> Key Binds - User
以下を追加
{ "keys": ["super+d"], "command": "find_under_expand" },
{ "keys": ["ctrl+d"], "command": "godef" },
ちなみにコレを追加しておくと、JumpBackもしてくれるそうです。
ショートカットキーの重複を確認しておくといいです2
{ "keys": ["ctrl+j"], "command": "jump_forward"},
{ "keys": ["ctrl+k"], "command": "jump_back"},
使用方法
ジャンプしたい関数にカーソルを合わせて、ctrl + d
で定義ジャンプします。
SublimeLinter
Sublimeで各言語のLinterを動かすベースとなるプログラムです。
設定ファイル
メニュー -> Sublime Text -> Preference -> Package Settings -> SublimeLinter -> Settings - User
{
"user": {
"debug": false,
"delay": 0.25,
"error_color": "D02000",
"gutter_theme": "Packages/SublimeLinter/gutter-themes/Default/Default.gutter-theme",
"gutter_theme_excludes": [],
"lint_mode": "load/save",
"linters": {
"golint": {
"@disable": false,
"args": [],
"excludes": []
},
"gotype": {
"@disable": false,
"args": [],
"excludes": []
}
},
"mark_style": "solid underline",
"no_column_highlights_line": false,
"passive_warnings": false,
"paths": {
"linux": [],
"osx": [
"/path/to/gopath/bin/"
],
"windows": []
},
"python_paths": {
"linux": [],
"osx": [],
"windows": []
},
"rc_search_limit": 3,
"shell_timeout": 10,
"show_errors_on_save": true,
"show_marks_in_minimap": true,
"syntax_map": {
"html (django)": "html",
"html (rails)": "html",
"html 5": "html",
"php": "html",
"python django": "python"
},
"warning_color": "DDB700",
"wrap_find": true
}
}
色々書いてありますが、見るべき箇所は数点です
paths
"paths": {"osx": ["/path/to/gopath/bin/"]
には、$GOPATH/bin/
を指定します。
設定しないとLinterが動きません。
フルパスで書いておきます。
lintの表現
-
lint_mode
: いつLinterを動かすか -
mark_style
: Lintのエラーをエディタ上でどう表現するか -
show_errors_on_save
: 保存時にLintのエラーを表示するか(True
が本当にオススメです)
この3設定は、メニュー -> Tools -> SublimeLinter
からも設定すると、設定値一覧がでてくるので便利です。
SublimeLinter-contrib-golint
goのlinterをまず導入します
$ go get -u github.com/golang/lint/golint
packageをインストールします。
SublimeText3を再起動してください。
コメントのないパブリック関数のfunc
にオレンジのアンダーバーがあれば成功です。
GoToTest
Command + Shift + .
で、プログラムファイル、テストファイルと交互に遷移します。
※プログラムファイル hoge.go に対して、テストファイル hoge_test.go が存在する場合のみ
Go Toggle Declare
このプラグインを入れると、shift + tab
でカーソル行の :=
を =
へtoggleしてくれます。
暴力的なショートカットかと思いきや、実はgofmt
, goimports
のおかげで、Goの開発ではtabやuntabを使いません。
最後に
これでうまく動かない場合はぜひコメ欄で教えて下さい。さらの状態のMacでトライしておりませんで。。