GoTools
Sublime Text 3的Golang集成
详情
安装
- 总计 13K
- Win 5K
- Mac 5K
- Linux 3K
8月6日 | 8月5日 | 8月4日 | 8月3日 | 8月2日 | 8月1日 | 7月31日 | 7月30日 | 7月29日 | 7月28日 | 7月27日 | 7月26日 | 7月25日 | 7月24日 | 7月23日 | 7月22日 | 7月21日 | 7月20日 | 7月19日 | 7月18日 | 7月17日 | 7月16日 | 7月15日 | 7月14日 | 7月13日 | 7月12日 | 7月11日 | 7月10日 | 7月9日 | 7月8日 | 7月7日 | 7月6日 | 7月5日 | 7月4日 | 7月3日 | 7月2日 | 7月1日 | 6月30日 | 6月29日 | 6月28日 | 6月27日 | 6月26日 | 6月25日 | 6月24日 | 6月23日 | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Windows | 0 | 1 | 1 | 1 | 0 | 1 | 0 | 0 | 1 | 1 | 0 | 0 | 1 | 0 | 1 | 0 | 0 | 0 | 1 | 1 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 1 | 2 | 1 | 0 | 0 | 0 | 0 | 1 | 1 | 1 | 2 | 0 |
Mac | 1 | 1 | 1 | 1 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 1 | 0 | 0 | 2 | 1 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 4 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
Linux | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 2 | 0 | 1 | 0 | 0 | 1 | 0 | 1 | 0 | 0 | 0 | 0 | 1 | 2 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
README
:警告: 此项目不再维护。 :警告
我推荐使用Visual Studio Code 和 vscode-go 扩展以获得更好的Go编程体验。
GoTools
GoTools 是一个受 Go编程语言 启发的 Sublime Text 3 插件,类似于 vim-go。它不试图重新发明各种支持的IDE组件,而是提供与现有社区支持的工具的集成。
特性
- 跳转到符号/声明(使用您选择的 oracle 或 godef)
- 保存时格式化和语法检查,包括括号(使用 gofmt)
- 自动完成(使用 gocode)
- 构建和测试集成
- 源分析(使用 oracle)
- 标识符重命名(使用 gorename)
- 改进的语法支持(借鉴自 GoSublime)
先决条件
GoTools 将尝试使用 GOPATH
和 GOROOT
(而不是 PATH
)找到所有外部Go工具(oracle
、gofmt
、gocode
等)。如果您没有这些二进制文件,请使用 go get
安装它们
go get -u -v github.com/nsf/gocode
go get -u -v github.com/rogpeppe/godef
go get -u -v golang.org/x/tools/cmd/goimports
go get -u -v golang.org/x/tools/cmd/oracle
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: Install Package”安装“GoTools”包。
如果您想手动安装 GoTools,请下载最新版本并将其解压到 Linux 上的 ~/.config/sublime-text-3/Packages/GoTools
或 OS X 上的 ~/Library/Application\ Support/Sublime\ Text\ 3/Packages/GoTools
。
配置 GoTools
通过 Sublime Text 偏好设置菜单创建 GoTools 设置文件:Package Settings -> GoTools -> Settings -> User
。
默认设置 已提供,可通过 Sublime Text 偏好设置菜单在 Package Settings -> GoTools -> Settings - Default
中访问。每个选项都在设置文件中有所说明。
配置您的项目
在 Sublime Text 的 .sublime-project
文件中创建一个 GoTools
设置键(通过菜单中的 Project -> Edit Project
)。
提供了一个文档化的示例项目文件。
使用 GoTools
注意:大多数 GoTools 命令都可通过 Sublime Text 命令面板访问。在查看 Go 源文件时打开面板,搜索“GoTools”以查看可用选项。
许多构建命令也可以通过上下文菜单访问。
保存时格式化
GoTools 会将 Go 源缓冲区在保存时进行格式化。要禁用自动格式化,请设置GoTools 设置中的 format_on_save
。
以下是一个示例键绑定,当按下 <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"}
默认情况下使用godef 进行定义支持。要更改后端,请在GoTools 设置中设置 goto_def_backend
。
自动完成
GoTools 将 Sublime Text 自动完成引擎与 gocode 集成。
以下是一个示例键绑定,当按下 <ctrl>+<空格>
时将自动完成
{"keys": ["ctrl+space"], "command": "auto_complete"}
当有可用建议时,将出现一个格式化的建议列表,包括每个建议的类型信息。
要禁用自动完成集成,请设置GoTools 设置中的 autocomplete
。
构建
GoTools 将 Sublime Text 构建系统与 go build
集成。
通过在 Sublime Text 菜单中选择Tools -> Build System
来激活 GoTools 构建系统。如果构建系统设置为Automatic
,则在编辑 Go 源文件时将自动使用 GoTools 进行构建。
有几种执行构建的方法
- 在 Sublime Text 菜单中的
Tools -> Build
- 绑定到
build
命令的键 - 命令面板,如
Build: Build
还提供了一个“Clean 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
时运行 "Clean Build"。
{ "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 通过 gotools_oracle
Sublime Text 命令将 Sublime Text 集成到 oracle。
以下是一个示例,当按下 <ctrl+alt+i>
时运行 oracle 的 "implements" 命令。
{ "keys" : ["ctrl+alt+i"], "command" : "gotools_oracle" , "args" : {"command": "implements"}},
以下运算符是作为 gotools_oracle
命令参数支持的:
命令 | 说明 |
---|---|
调用方 | 在大型代码库上较慢。 |
被调用方 | 在大型代码库上较慢。 |
调用栈 | 在大型代码库上较慢。 |
描述 | |
自由变量 | 需要选择。 |
实现 | |
同伴 | |
引用者 |
Oracle 结果放在 Sublime Text 输出面板中,可以使用命令切换,例如:
{ "keys" : ["ctrl+m"], "command" : "show_panel" , "args" : {"panel": "output.gotools_oracle", "toggle": true}},
重命名(实验性)
GoTools 提供了一个由 gorename 支持的 gotools_rename
命令,该命令支持类型安全的标识符重命名。
当执行 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 实例等。如果您担心与其他与 gocode 集成的工具进行互操作性,请勿使用此设置。
某些项目使用依赖项隔离工具,例如 Godep,且许多项目使用某种自定义构建脚本。此外,gocode 使用客户端/服务器架构,目前依赖于全局服务器端设置来解决建议计算中 Go 包路径。默认情况下,gocode 只搜索 GOROOT
和 GOPATH/pkg
中的包,如果项目将这些编译到多个 GOPATH
条目(例如 Godeps/_workspace/pkg
),则这可能不足够。
对于此类项目,为了从 gocode 获取最佳建议,必须在客户端请求建议请求之前配置 gocode 守护进程,以告知 gocode 项目编译包的位置。
GoTools 将通过构建包含所有项目 GOPATH
条目的路径来推断正确的 gocode lib-path
。
GoSublime 注意事项
与 GoSublime 一起安装 GoTools 未经过测试或支持,所以您的体验可能与描述不同。