Go语言工具集成
Sublime Text 3 对 Go语言工具(gofmt, gocode, golint, guru, gorename, ...)的集成
详细信息
安装次数
- 总数 43K
- Win 15K
- Mac 16K
- Linux 11K
Aug 6 | Aug 5 | Aug 4 | Aug 3 | Aug 2 | Aug 1 | Jul 31 | Jul 30 | Jul 29 | Jul 28 | Jul 27 | Jul 26 | Jul 25 | Jul 24 | Jul 23 | Jul 22 | Jul 21 | Jul 20 | Jul 19 | Jul 18 | Jul 17 | Jul 16 | Jul 15 | Jul 14 | Jul 13 | Jul 12 | Jul 11 | Jul 10 | Jul 9 | Jul 8 | Jul 7 | Jul 6 | Jul 5 | Jul 4 | Jul 3 | Jul 2 | Jul 1 | Jun 30 | Jun 29 | Jun 28 | Jun 27 | Jun 26 | Jun 25 | Jun 24 | Jun 23 | Jun 22 | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Windows | 0 | 2 | 1 | 0 | 1 | 1 | 0 | 0 | 0 | 1 | 1 | 1 | 2 | 3 | 0 | 0 | 2 | 1 | 1 | 4 | 1 | 1 | 1 | 1 | 1 | 1 | 6 | 2 | 3 | 3 | 0 | 2 | 0 | 0 | 1 | 0 | 1 | 0 | 2 | 0 | 0 | 0 | 2 | 1 | 0 | 0 |
Mac | 2 | 2 | 0 | 1 | 1 | 1 | 1 | 0 | 2 | 2 | 1 | 0 | 2 | 1 | 1 | 1 | 0 | 0 | 1 | 2 | 2 | 3 | 1 | 0 | 1 | 2 | 2 | 2 | 1 | 2 | 1 | 1 | 3 | 1 | 1 | 5 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 2 | 3 | 0 |
Linux | 0 | 0 | 1 | 3 | 2 | 1 | 4 | 0 | 0 | 0 | 3 | 1 | 2 | 0 | 3 | 1 | 1 | 2 | 2 | 2 | 1 | 0 | 0 | 1 | 3 | 0 | 0 | 0 | 1 | 2 | 1 | 1 | 0 | 0 | 0 | 3 | 2 | 2 | 0 | 2 | 4 | 2 | 1 | 0 | 7 | 1 |
说明文档
我已经将我的IDE选择更改为JetBrains的Gogland。
Go语言工具集成
这是ironcladlou的GoTools的一个分叉版本。我创建这个项目是因为ironcladlou决定放弃GoTools项目,我想使用这个插件与Golang Build(由wbond提供)一起使用(讨论-1;讨论-2)。
从GoTools继承的功能
- 自动补全:使用gocode
- 自动格式化:使用gofmt或goimports
- 跳转到定义:使用guru
- 重命名:使用gorename
从GoTools移除(替换)的功能
- Go语法高亮:被Sublime的本地支持所替换
- Go构建和测试系统:由“Golang Build”(在package-control中搜索)替换
- GoTools设置:由“golangconfig”替换
- godef支持:仅使用guru进行“跳转到定义”
新增功能
- 自动检查:使用golint或govet
- 在选择的文本或光标上显示文档提示:使用godoc
使用方法
步骤1:自行安装golang及go工具:gocode、goimports、guru、gorename、golint,并确保
$GOPATH/bin
已添加到$PATH
(或者你可以在Golang的全局“设置 - 用户”中之后设置它们)。go get -u -v github.com/nsf/gocode # OR mdempsky/gocode for better performance go get -u -v github.com/mdempsky/gocode go get -u -v github.com/golang/lint/golint go get -u -v golang.org/x/tools/cmd/guru go get -u -v golang.org/x/tools/cmd/goimports go get -u -v golang.org/x/tools/cmd/gorename
步骤2:从package control中搜索并安装“Go语言工具集成”。
步骤3(可选):根据
golang.sublime-settings
和ExampleProject.sublime-project
配置golang
和你的项目的设置。通常,'guru'的完整功能需要使用项目的配置。
提示
如果你想在使用“.”后触发自动补全,可以在“设置 - 语法特定 - 用户”(也称为User/Go.sublime-settings)中添加以下内容
{ "auto_complete_triggers": [{"selector": "source.go - string - comment - constant.numeric", "characters": "."}] }
如果您想在注释、常量字符串和数字中忽略自动完成,可以在设置中添加以下内容 - 语法特定 - 用户(即 User/Go.sublime-settings)
{ "auto_complete_selector": "meta.tag - punctuation.definition.tag.begin, source - comment - string - constant.numeric" }
以下介绍来自 GoTools 项目
GoTools
GoTools 是一个受 Go 编程语言 启发,用于 Sublime Text 3 的插件,灵感来源于 vim-go。它不是重新发明各种支持 IDE 组件,而是提供了与现有社区支持工具的集成。
功能
- 使用 guru 跳转到符号/声明
- 保存时格式化语法检查,包括边缘标记(使用 gofmt)
- 自动完成(使用 gocode)
- 构建和测试集成
- 源分析(使用 guru)
- 标识符重命名(使用 gorename)
- 改进语法支持(借鉴自 GoSublime)
先决条件
GoTools 将尝试使用 GOPATH
和 GOROOT
(而不是 PATH
)查找所有外部 Go 工具(如 guru
、gofmt
、gocode
等)。如果您没有这些二进制文件,请使用 go get
安装它们
go get -u -v github.com/nsf/gocode
go get -u -v golang.org/x/tools/cmd/goimports
go get -u -v golang.org/x/tools/cmd/guru
go get -u -v golang.org/x/tools/cmd/gorename
GoTools 仅在 Go 1.4 上进行了测试。请注意,现在 gofmt
已包含在 Go 发行版中,安装在 GOPATH
中的任何 gofmt
可能来自旧版本的 Go,应该被删除。
安装
安装 GoTools 最简单的方法是使用 Package Control。简单安装 Package Control,然后从命令面板使用 Package Control: 安装包
安装“GoTools”包。
如果您想手动安装 GoTools,请下载 最新版本,并将其提取到 Linux 上的 ~/.config/sublime-text-3/Packages/GoTools
或 macOS 上的 ~/Library/Application\ Support/Sublime\ Text\ 3/Packages/GoTools
。
配置 GoTools
通过 Sublime Text 排优先选项菜单中的 Package Settings -> GoTools -> Settings -> User
创建 GoTools 设置文件。
默认设置 已提供,并通过 Sublime Text 排优先选项菜单中的 Package Settings -> GoTools -> Settings - Default
可访问。每个选项都在设置文件本身中进行了说明。
配置您的项目
在 Sublime Text 的 .sublime-project
文件中创建一个 GoTools
设置密钥(通过 Project -> 编辑项目
菜单实现)。
提供了一个有文档的 示例项目文件。
使用 GoTools
注意:大多数 GoTools 命令都可通过 Sublime Text 命令面板使用。在查看 Go 源文件时打开面板,并搜索“GoTools”以查看可用内容。
许多构建命令也通过上下文菜单提供。
保存时格式化
每次保存 Go 源缓冲区时,GoTools 都会对其进行格式化。要禁用自动格式化,请将 format_on_save
设置在您的 GoTools 设置 中。
以下是当按下 <ctrl>+<alt>+f
时格式化源文件的示例键绑定
{"keys": ["ctrl+alt+f"], "command": "gotools_format"}
默认使用 gofmt 进行格式化。要更改后端,请在您的 GoTools 设置 中设置 format_backend
。还可用 goimports,以及首先运行 goimports 然后运行 gofmt 的选项。此第三个选项在您想同时启用自动导入解析以及 gofmt 的简化(-s
)功能时很有用。
转到定义
GoTools 提供了一个名为 gotools_goto_def
的 Sublime Text 命令,将光标位置处的符号定义跳转过去。
这里是一个示例键绑定示例,当按下 <ctrl+g>
时,将跳转到定义。
{"keys": ["ctrl+g"], "command": "gotools_goto_def"}
这里是一个示例 sublime-mousemap
条目,它将使用 <ctrl>+<左鼠标>
跳转到定义。
{"button": "button1", "count": 1, "modifiers": ["ctrl"], "command": "gotools_goto_def"}
自动完成
GoTools 将 Sublime Text 自动完成引擎整合到了 gocode。
这里是一个示例键绑定,当按下 <ctrl>+<space>
时自动完成。
{"keys": ["ctrl+space"], "command": "auto_complete"}
当有建议可用时,将出现一个特殊格式的建议列表,包括每个建议的类型信息。
要禁用自动完成集成,请在您的 GoTools 设置 中设置 autocomplete
。
构建
GoTools 将 Sublime Text 构建系统与 go build
相结合。
从 Sublime Text 菜单中选择 工具 -> 构建系统
来激活 GoTools 构建系统。如果构建系统设置为 自动
,则在编辑 Go 源文件时将自动使用 GoTools 进行构建。
有多种方式可以执行构建
- 从 Sublime Text 菜单中选择
工具 -> 构建
- 绑定到
build
命令的键 - 命令面板,作为
构建: 构建
还提供了一种“清理构建”命令变体,在正常执行构建之前递归删除所有 GOPATH/pkg
目录内容。
构建结果将放置在 Sublime Text 构建输出面板中,可以使用命令切换面板
{ "keys" : ["ctrl+m"], "command" : "show_panel" , "args" : {"panel": "output.exec", "toggle": true}},
这里是一个示例键绑定,当按下 <ctrl>+b
时运行构建
{ "keys": ["ctrl+b"], "command": "build" },
这里是一个示例键绑定,当按下 <ctrl>+<alt>+b
时运行“清理构建”
{ "keys": ["ctrl+alt+b"], "command": "build", "args": {"variant": "Clean Build"}},
测试
GoTools 将 Sublime Text 构建系统与 go test
相结合。
GoTools 根据上下文尝试“理解你的意图”。例如,在需要 integration
Go 构建标签的测试文件中使用“在光标处运行测试”时,GoTools 会注意到这一点,并自动将 -tags integration
添加到测试执行中。
以下 GoTools 构建变体可用
变体 | 描述 |
---|---|
运行测试 | 基于相对于项目的 project_package 和 test_packages 设置发现测试包,并在 gopath 附近执行它们。 |
在光标处运行测试 | 在光标或其周围运行单个测试方法。 |
运行当前包的测试 | 运行包含当前文件的包的测试。 |
运行标记测试 | 类似于“运行测试”,但对于在 tagged_packages 设置中指定的包。 |
运行上次测试 | 运行之前执行的最后一个测试变体。 |
测试结果将放置在内置的 Sublime Text 构建输出面板中,可以使用命令切换面板
{ "keys" : ["ctrl+m"], "command" : "show_panel" , "args" : {"panel": "output.exec", "toggle": true}},
这里是一个示例键绑定,当按下 <ctrl>+<alt>+t
时,运行光标处的测试
{ "keys": ["ctrl+alt+t"], "command": "build", "args": {"variant": "Run Test at Cursor"}},
将命令中的 variant
替换为前面表格中的任何变体名称以进行其他绑定。
Oracle 分析(实验性)
GoTools 通过 guru 将 Sublime Text 与之整合。使用《Sublime Text》命令 gotools_guru
调用 Oracle。
这里是一个示例,当按下 <ctrl+alt+i>
时运行 guru 的“实现”命令
{ "keys" : ["ctrl+alt+i"], "command" : "gotools_guru" , "args" : {"command": "implements"}},
以下 guru 操作是《Sublime Text》命令 gotools_guru
的参数
命令 | 备注 |
---|---|
callers | 在大代码库上较慢。 |
callees | 在大代码库上较慢。 |
callstack | 在大代码库上较慢。 |
describe | |
freevars | 需要一个选择。 |
implements | |
peers | |
referrers |
Oracle 结果将放置在一个《Sublime Text》输出面板中,可以使用命令切换面板
{ "keys" : ["ctrl+m"], "command" : "show_panel" , "args" : {"panel": "output.gotools_guru", "toggle": true}},
重命名(实验性)
GoTools 提供 gotools_rename
命令,该命令由 gorename 支持,它可以对标识符进行类型安全的重命名。
执行 gotools_rename
命令时,将出现一个标签为《Go 重命名》的输入面板。重命名结果将放置在一个《Sublime Text》输出面板中,可以使用命令切换面板
{ "keys" : ["ctrl+m"], "command" : "show_panel" , "args" : {"panel": "output.gotools_rename", "toggle": true}},
重要:工具 gorename
会替换地写入文件,没有干运行选项。变更可能是破坏性的,并且该工具已知存在错误。
Gocode 注意事项
重要:使用 gocode 支持将修改 gocode 守护进程的 lib-path
设置。该更改将影响所有客户端,包括其他 Sublime Text 会话、Vim 实例等。如果你的 concern 是与其他集成 gocode 的工具的互操作性,则不要使用此设置。
有些项目使用依赖隔离工具,如 Godep,许多项目也使用某种自定义构建脚本。此外,gocode 使用客户端/服务器架构,目前依赖于全局服务器端设置来解析用于建议计算的 Go 包路径。默认情况下,gocode 只会在 GOROOT
和 GOPATH/pkg
中搜索包,如果项目将源代码编译到多个 GOPATH
条目(例如 Godeps/_workspace/pkg
)中,这可能是不足够的。
对于这样的项目,要获得 gocode 的最佳建议,有必要在客户端建议请求之前配置 gocode 守护进程,以通知 gocode 项目的编译包位置。
GoTools 会通过构成一个路径来推断正确的 gocode lib-path
,该路径包含所有项目的 GOPATH
条目。
GoSublime 注意事项
在 GoSublime 旁边安装 GoTools 没有经过测试或支持,所以 YMMV(根据你自己的情况而定)。