gopls不会自动启动的根本原因是Sublime GUI启动时未继承shell的PATH,导致找不到go和gopls命令;必须通过终端验证which go/which gopls输出、硬编码gopls绝对路径、确保项目含go.mod、卸载GoSublime等冲突插件。

gopls 不会自动启动,根本原因不是插件没装,而是 Sublime GUI 启动时压根没拿到 go 和 gopls 的路径。终端里能跑,Sublime 里报 command not found,是常态。
确认 gopls 已安装且路径明确
别用 go get(已弃用),必须执行:
go install golang.org/x/tools/gopls@latest
然后立刻验证:
-
which go和which gopls都得有输出,比如/usr/local/go/bin/go和/Users/you/go/bin/gopls - 如果
which gopls没输出,说明没装成功,或$GOPATH/bin不在当前 shell 的$PATH里 - macOS 用户检查
~/.zshrc是否含export PATH="$HOME/go/bin:$PATH",并运行source ~/.zshrc - Windows 用户必须把
C:\Go\bin和%USERPROFILE%\go\bin加进「系统级」PATH,仅用户变量无效
LSP 插件里必须硬编码 gopls 路径
LSP 默认只查 $PATH,但 GUI 启动的 Sublime 常常连 $PATH 都为空。靠环境变量继承是赌运气,硬编码才是稳解。
打开 Preferences → Package Settings → LSP → Settings,在 "clients" 下写死路径:
立即学习“go语言免费学习笔记(深入)”;
{
"clients": {
"gopls": {
"command": ["/Users/you/go/bin/gopls"],
"enabled": true,
"settings": {
"gopls.build.experimentalWorkspaceModule": true,
"gopls.formatting.gofumpt": true
}
}
}
}
- macOS/Linux 路径用正斜杠;Windows 用正斜杠或双反斜杠,如
["C:/Users/you/go/bin/gopls.exe"] -
"gopls.build.experimentalWorkspaceModule": true是 Go 1.21+ 必填项,缺了就加载失败,哪怕go.mod存在也没用 - 删掉所有
"env": {"GOROOT": "...", "GOPATH": "..."}——gopls自己会读go env,硬写反而干扰模块识别
项目根目录必须含 go.mod,且 Sublime 工作区要对齐
gopls 不认 GOPATH,只认 module。没有 go.mod,它直接当普通文本处理,跳转、补全、诊断全失效。
- 在项目根目录终端执行
go mod init example.com/foo生成go.mod - Sublime 打开项目时,必须以含
go.mod的文件夹为根目录(File → Open Folder),不能只打开单个.go文件 - 如果用了
go.work,确保它也在同一级或父级,并被gopls识别(可通过gopls -rpc.trace -v日志确认) - 缓存出问题时,清掉
~/Library/Caches/gopls(macOS)或%LOCALAPPDATA%\gopls(Windows)再重启
别装 GoSublime,它和 gopls 冲突
GoSublime 自 2021 年起停止维护,它的补全、格式化逻辑会跟 gopls 抢控制权,导致 F12 跳错、Ctrl+Space 不响应、保存后代码乱排。
- 用 Package Control 卸载
GoSublime和GoTools等旧插件 - 只留
LSP+LSP-Go(可选),其他 Go 相关插件一律禁用 - 格式化统一交给
gopls:关掉所有gofmt/goimports的保存钩子,只在LSP设置里开"lsp_format_on_save": true
gopls 对 go.mod 和工作区路径极其敏感。路径写错一位、go.mod 不在根目录、插件冲突——任何一个都足以让整个语言服务静默失败。


















