gopls是go官方唯一推荐的语言服务器,sublime需通过lsp+lsp-go插件硬编码其绝对路径配置,并确保go和gopls已用go install安装、项目含go.mod、working_dir正确,同时卸载gosublime等冲突插件。

gopls 是当前唯一被 Go 官方推荐、持续维护的语言服务器,Sublime Text 本身不带 Go 支持,必须靠它提供跳转、补全、格式化等核心能力。用 LSP + LSP-Go 组合,比已停更的 GoSublime 更可靠,也适配 Go 1.21+ 和 module 模式。
Sublime 启动后找不到 go 或 gopls 命令
根本原因是 Sublime(尤其是 macOS GUI 启动或 Windows 开始菜单启动)不继承 shell 的 $PATH,哪怕终端里 go version 和 gopls version 都正常,Sublime 内部仍会报 command not found。
- 先在终端运行
which go和which gopls,记下完整路径,例如/usr/local/go/bin/go和/Users/you/go/bin/gopls - macOS 用户:确认
export PATH="/usr/local/go/bin:/Users/you/go/bin:$PATH"已写入~/.zshrc,并执行source ~/.zshrc;Windows 用户:把go.exe和gopls.exe所在目录(如C:/Go/bin、%USERPROFILE%/go/bin)加进「系统级」环境变量PATH,不是仅用户变量 - 别用
go get装gopls——已弃用。改用:go install golang.org/x/tools/gopls@latest
LSP 插件里必须硬编码 gopls 路径
LSP 插件默认只查 $PATH,但 GUI 启动方式常导致该变量不可用。硬编码绝对路径是最稳的解法。
- 打开
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,gopls也会加载失败
项目必须含 go.mod,且 working_dir 要对
gopls 依赖 module 模式识别包结构。没有 go.mod,跳转定义、补全 import 全失效;构建时 working_dir 错了,go run . 就找不到模块。
- 若项目还没
go.mod,在终端进入项目根目录,执行:go mod init example.com/foo - 构建系统中务必设
"working_dir": "${file_path}",并确保当前文件位于含go.mod的目录下 - 推荐构建配置(保存为
Packages/User/GoRun.sublime-build):
{
"cmd": ["go", "run", "."],
"working_dir": "${file_path}",
"shell": true,
"file_regex": "^(.*?):([0-9]+):([0-9]+):(.*)$",
"selector": "source.go"
}
-
"shell": true很关键——它让 Sublime 通过系统 shell 执行命令,从而继承你的GO111MODULE、GOPATH等环境变量
删掉 GoSublime 等冲突插件
GoSublime 自 2021 年起基本停止维护,与 gopls 抢进程会导致卡在 “starting…”、补全失效、跳转错乱等问题。它依赖 GOPATH,和现代 module 项目天然不兼容。
- 按
Ctrl+Shift+P(macOS 是Cmd+Shift+P)→ 输入Package Control: Remove Package→ 选中GoSublime卸载 - 同样检查是否装了
GoTools、GoFormat等老插件,一并禁用或卸载 - 只保留
LSP和LSP-Go(后者非必需,LSP本身已支持自动发现gopls)
PATH;最保险的做法是始终用终端执行 subl 启动编辑器,而不是点图标。golang免费学习笔记(深入):立即使用
在学习笔记中,你将探索golang的核心概念和高级技巧!











