gopls是Go官方语言服务器,Sublime需通过LSP+LSP-Go插件配置绝对路径才能实现跳转、补全等功能;必须确保go和gopls路径正确、项目含go.mod、working_dir准确,并禁用冲突插件。

gopls 是 Go 官方语言服务器,Sublime 本身不带 Go 支持,必须靠它提供跳转、补全、格式化等核心能力。用 LSP + LSP-Go 组合,比老插件 GoSublime 更可靠、更现代,也适配 Go 1.21+ 和 module 模式。
确认 go 和 gopls 已安装且路径正确
Sublime 不继承 shell 的 $PATH,即使终端里 go version 和 gopls version 都正常,Sublime 仍可能找不到命令。
- 在终端运行
which go和which gopls,记下完整路径,例如/opt/homebrew/bin/go和/Users/you/go/bin/gopls - macOS 用户:如果用 zsh,确保
export PATH="/opt/homebrew/bin:$PATH"已写入~/.zshrc,并执行source ~/.zshrc - Windows 用户:把
go.exe和gopls.exe所在目录(如C:Goin、%USERPROFILE%goin)加进系统级环境变量PATH,不是仅用户变量 - 别用
go get装gopls——已弃用。改用:go install golang.org/x/tools/gopls@latest
LSP 插件配置必须显式指定 gopls 路径
LSP 插件默认只查 $PATH,但 Sublime 启动方式(Dock/Spotlight)常导致 $PATH 不可用。硬编码路径是最稳的解法。
- 打开
Preferences → Package Settings → LSP → Settings - 在
clients下添加完整配置,关键点是"command"必须为绝对路径:
{
"clients": {
"gopls": {
"command": ["/Users/you/go/bin/gopls"],
"enabled": true,
"settings": {
"gopls.build.experimentalWorkspaceModule": true,
"gopls.formatting.gofumpt": true
}
}
}
}
- Windows 路径用正斜杠或双反斜杠:
"command": ["C:/Users/you/go/bin/gopls.exe"] -
"gopls.build.experimentalWorkspaceModule": true是 Go 1.21+ 必需项,否则项目根目录有go.mod也加载失败 - 删掉其他 Go 插件(比如
GoSublime),它们会和LSP抢gopls进程,导致卡在 “starting…”
项目必须有 go.mod,且 working_dir 要对
gopls 依赖 module 模式识别包结构。没有 go.mod,跳转定义、补全 import 全失效;构建时 working_dir 错了,go run 就找不到模块。
- 在项目根目录终端运行:
go mod init example.com/foo(随便起个合法模块名) - 手动建一个干净的 Build System(
Tools → Build System → New Build System):
{
"cmd": ["go", "run", "$file"],
"file_regex": "^(.*?):([0-9]+):([0-9]+):(?:\s+(error|warning):\s+)?(.*)$",
"working_dir": "${file_path}",
"selector": "source.go"
}
-
"working_dir": "${file_path}"确保go run在文件所在目录执行,而不是 Sublime 启动目录 - 保存为
Go.sublime-build,之后选中该构建系统再按Ctrl+B就能跑单文件
SublimeLinter-golangci-lint 找不到命令?单独配 executable 路径
这个插件不会自动从 $PATH 查 golangci-lint,必须显式告诉它二进制在哪。
立即学习“go语言免费学习笔记(深入)”;
- 先装:
go install github.com/golangci/golangci-lint/cmd/golangci-lint@latest - 再运行
which golangci-lint确认路径,比如/Users/you/go/bin/golangci-lint - 打开
Preferences → Package Settings → SublimeLinter → Settings - 在
"linters"下加:
"golangci_lint": {
"executable": ["/Users/you/go/bin/golangci-lint"]
}
- 注意:值必须是数组
[],不是字符串;Windows 路径同样用正斜杠 - 如果 lint 结果不显示,检查 Sublime 底部状态栏是否出现
SublimeLinter: golangci_lint activated
gopls 首次启动会索引整个模块依赖,可能卡几秒甚至十几秒,这不是配置错——等它完成,后续就快了。真正容易被忽略的是 working_dir 和 gopls 的绝对路径这两处,错一个,Ctrl+Click 跳定义就直接跳到 $GOROOT 里的源码里去。


















