Я пробовал много всего, чтобы настроить мою среду sublime text 3, и я придумал следующую конфигурацию. Это позволяет мне делать:

  • Перейти к определению / объявлению с помощью коротких клавиш или щелчка мыши
  • Автозаполнение даже в сложных ситуациях
  • Рефакторинг с учетом контекста
  • Автоматически проверять и проверять мои коды и другие вспомогательные инструменты
  • И более…

Вот инструменты, необходимые для работы этой настройки:

$ go get -u github.com/nsf/gocode
$ go get -u golang.org/x/tools/cmd/guru
$ go get -u golang.org/x/tools/cmd/goimports
$ go get -u golang.org/x/tools/cmd/gorename
$ go get -u github.com/golang/lint/golint
$ go get -u github.com/jgautheron/goconst/cmd/goconst
$ go get -u github.com/jgautheron/usedexports
$ go get -u github.com/gordonklaus/ineffassign

Я установил gosublime, отличный плагин. Хотя я не полагаюсь на его функцию определения перехода, потому что она немного медленная и не всегда работает. Я использую его только для завершения кода (с помощью gocode) и запуска линтеров. Для определения goto я использую GoGuru.

Обратите внимание на желоб и строку состояния при сохранении кода. Так ваши линтеры общаются с вами.

Просто установите gosublime с помощью Package Control и настройте его. Вот моя установка для gosublime:

{
    "env": {
        "GOPATH": "/home/arsham/Projects/Go:/usr/bin/go",
        "PATH": "/home/arsham/Projects/Go/bin:$PATH:/usr/bin",
    },
    "comp_lint_enabled": true,
    "ipc_timeout": 2,
    "fmt_cmd": ["goimports", "-srcdir", "$_dir"],
    "on_save": [
        {"cmd": "gs_comp_lint"},
    ],
    "comp_lint_commands": [
        {"cmd": ["go", "build", "-i"]},
        {"cmd": ["golint $_fn"], "shell": true},
        {"cmd": ["go", "vet"]},
        {"cmd": ["goconst $_dir"], "shell": true},
        {"cmd": ["usedexports $_dir"], "shell": true},
        {"cmd": ["ineffassign $_fn"], "shell": true},
    ],
}

Обратите внимание, что здесь мы заменяем gofmt на goimports. Первая команда comp_lint_command (go build -i) гарантирует, что завершение работает.

Измените раздел env на свою среду. Он выравнивает ваш код всякий раз, когда вы сохраняете файл и устанавливаете его, что помогает gocode работать правильно.

Если вы нажмете crtl+.,ctrl+., откроется палитра команд gosublime. Есть ряд функций, которые вы можете использовать ежедневно, например:

ctrl+., ctrl+a: Browse all declarations.
ctrl+., ctrl+p: Manipulate import secion without having to go there.
ctrl+., ctrl+e: Show linter issues.

GoTo Определение

Подойти к определению гогуру - прекрасный инструмент. Вы можете использовать мышь или сочетание клавиш для перехода к определениям, и это супер!

В файле «~ / .config / sublime-text-3 / Packages / Default (Linux) .sublime-keymap» у меня есть:

{ "keys": ["ctrl+.", "ctrl+g"], "command": "go_guru_goto_definition", "args": {"output": false}, "context": [{ "key": "selector", "operator": "equal", "operand": "source.go" }] },

При такой настройке, когда я нажимаю ctrl+. ctrl+g, он быстро переходит к определению. Настройки мыши:

{"button": "button2", "modifiers": ["ctrl"], "press_command": "drag_select", "command": "go_guru", "args": {"mode": "definition", "output": false }}

Я использую ctrl+button1, который щелкает левой кнопкой мыши для множественного выбора, а щелкнув правой кнопкой мыши, я могу перейти к определению.

Рефакторинг

Для рефакторинга вы можете установить gorename из управления пакетами. Настройки разумны, просто наведите курсор на то, что вы хотите переименовать, и нажмите ctrl+alt+r, затем hist esc, чтобы закрыть диалоговое окно и ввести новое имя.

Создать тесты

Для генерации тестов для ваших кодов вы можете использовать GoTests. Это мои пользовательские настройки для плагина:

{
    "GOPATH": "/home/arsham/Projects/Go",
}

Создайте файл sublime-commands (~ / .config / sublime-text-3 / Packages / GoTests.sublime-commands) и поместите следующее:

[
    {"caption": "Generate Go Tests", "command": "gotests"},
]

Вы можете использовать этот инструмент, выделив функцию (или область внутри функции), нажав ctrl+shift+p и выбрав Generate Go Tests. Он сгенерирует для вас необходимые тесты в файле тестов.

Пока вы пишете коды, вы можете видеть точки в полосе, они указывают на то, что в строке состояния написано сообщение линтера. Перейдите в мою другую статью, чтобы узнать обо всех линтерах, которые я использую, и о том, как их использовать.

Наслаждаться!