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
50
Help us understand the problem. What is going on with this article?
@MakoTano

SublimeText3でのGo言語開発環境セットアップ

More than 5 years have passed since last update.

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

設定をする際にgoimports1を入れておきましょう。

$ go get golang.org/x/tools/cmd/goimports

設定ファイル

メニュー -> Sublime Text -> Preference -> Package Settings -> GoSublime -> Settings - User
またはcommand + . -> command + 5でも開きます。

GOPATHは自分の環境のGOPATHに合わせてください。

GoSublime.sublime-settings
{
    "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 に存在する GoToDefinitionGsDoc: 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 は使えないので要注意です。)

Godef.sublime-settings
{
    "gopath": "/path/to/gopath/"
}

※プラグインの説明書きをみると、設定しなくても環境変数のGOPATH見に行くぜ!って書いてあるので、敢えて設定する必要がないかもしれません。

キーバインドの修正

command + d をGodefへ割り当てるという暴挙にでてきますので、キーバインドを直しましょう。
メニュー -> Sublime Text -> Preference -> Key Binds - User

以下を追加

Default(OSX).sublime-keymap
    { "keys": ["super+d"], "command": "find_under_expand" },
    { "keys": ["ctrl+d"], "command": "godef" },

ちなみにコレを追加しておくと、JumpBackもしてくれるそうです。
ショートカットキーの重複を確認しておくといいです2

Default(OSX).sublime-keymap
  { "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

SublimeLinter.sublime-settings
{
    "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にオレンジのアンダーバーがあれば成功です。

kobito.1431054640.413542.png

GoToTest

Command + Shift + . で、プログラムファイル、テストファイルと交互に遷移します。
※プログラムファイル hoge.go に対して、テストファイル hoge_test.go が存在する場合のみ

Go Toggle Declare

このプラグインを入れると、shift + tab でカーソル行の :== へtoggleしてくれます。
暴力的なショートカットかと思いきや、実はgofmt, goimportsのおかげで、Goの開発ではtabやuntabを使いません。

最後に

これでうまく動かない場合はぜひコメ欄で教えて下さい。さらの状態のMacでトライしておりませんで。。


  1. goimports とは gofmtにpackageのインポート・アンインポートをつけた拡張コマンドです。 

  2. Keymaps で、キーバインドのチートシートが作れます。このプラグインは変数のキャメル・スネークケースの変換などが入っていてオススメです。 

50
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
MakoTano

Comments

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