Sublime GUI启动不继承shell PATH导致go/gopls找不到,需硬编码绝对路径并配置gopls experimentalWorkspaceModule;macOS需source ~/.zshrc,Windows需设系统级PATH;Go.sublime-build须指定go路径并开启输出面板。

Sublime 启动后找不到 go 或 gopls:根本不是插件问题,是环境变量没继承
GUI 启动的 Sublime(macOS Dock / Windows 开始菜单)默认不读 shell 的 $PATH,哪怕终端里 go version 和 gopls version 都正常,它内部仍报 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 用户必须把
C:Goin和%USERPROFILE%goin加进「系统级」环境变量PATH,仅用户变量无效 - 兜底方案:在 Sublime 的
Preferences → Settings – User里加"path": "/usr/local/go/bin:/Users/you/go/bin"(Linux/macOS)或"path": "C:\Go\bin;C:\Users\you\go\bin"(Windows)
gopls 配置必须硬编码路径,且启用 experimentalWorkspaceModule
LSP 插件默认只查 $PATH,但 GUI 启动方式下该变量常为空。硬编码路径是最稳解法;而 gopls.build.experimentalWorkspaceModule 在 Go 1.21+ 是必需项,否则即使有 go.mod,gopls 也加载失败。
- 打开
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"] - 别用
go get装gopls——已弃用。改用:go install golang.org/x/tools/gopls@latest
构建失败或面板一闪而过:Go.sublime-build 必须设死路径 + 显式控制输出
exec: "go": executable file not found in $PATH 不是 Sublime 没装好,是它根本没继承 shell 的环境变量。而 Ctrl+B 后看不到错误,是因为构建目标默认关闭输出面板。
- 编辑
~/Library/Application Support/Sublime Text/Packages/User/Go.sublime-build(macOS)或对应路径(Windows/Linux) - 把
"cmd": ["go", "run", "$file"]改成硬编码路径:"cmd": ["/usr/local/go/bin/go", "run", "$file"] - 务必加上这两行:
"show_panel_on_build": true和"quiet": false - 不要用
$file_name—— 它不含路径,go run可能因找不到依赖报no Go files in current directory;统一用$file -
"working_dir": "${file_path}"必须存在,且当前文件需位于含go.mod的目录下
跳转失效、补全错乱、保存格式化打架:全因 gopls 没对齐项目结构
这不是插件冲突,而是 gopls 服务没跑起来,或没识别到 module 模式。GoSublime 自带的 gocode 已淘汰,现在所有语义能力都靠 gopls。
立即学习“go语言免费学习笔记(深入)”;
- 项目根目录必须有
go.mod;没有就进终端执行:go mod init example.com/foo - 确保
gopls version≥ v0.12.0;升级命令:go install golang.org/x/tools/gopls@latest - 关掉所有其他格式化插件(如
GoFormat、GoImports),让格式化行为完全收口到gopls - 如果用了
SublimeLinter-golangci-lint,也要硬编码路径:"executable": ["/Users/you/go/bin/golangci-lint"](注意是数组) - 缓存损坏时,清空:
rm -rf ~/Library/Caches/gopls(macOS)或%LOCALAPPDATA%gopls(Windows)
gopls 启动时是否真拿到了正确的 go、是否真在 module 根目录下运行、以及你有没有意识到 GUI 启动的 Sublime 根本不认你 shell 里写的那行 export PATH。


















