Я пробовал много всего, чтобы настроить мою среду 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
. Он сгенерирует для вас необходимые тесты в файле тестов.
Пока вы пишете коды, вы можете видеть точки в полосе, они указывают на то, что в строке состояния написано сообщение линтера. Перейдите в мою другую статью, чтобы узнать обо всех линтерах, которые я использую, и о том, как их использовать.
Наслаждаться!