[vscode]go的settings.json配置
2026/1/9大约 4 分钟
[vscode]go的settings.json配置
典型settings.json指定工作区的go使用版本
{
"go.alternateTools": {
"go": "/home/work/sdk/go1.21.0/bin/go"
},
"extensions.closeExtensionDetailsOnViewChange": true,
"editor.mouseWheelZoom": true,
"git.ignoreLimitWarning": true, // 比如:鼠标控制大小
"go.delveConfig": {
"debugAdapter": "legacy"
},
}go的.vscode配置
| 配置项 | 作用 |
go.toolsEnvVars | 影响 VS Code Go 插件内部命令(如 gopls、go build) |
terminal.integrated.env.linux | 影响 VS Code 内置终端的环境变量 |
.bashrc/.zshrc | 影响系统终端和外部打开的 VS Code 终端(如果没覆盖的话) |
有没有配置项影响go env的那些GOPROXY之类的呢
这类环境变量和 Go 模块相关(比如 GOPROXY、GOSUMDB、GOPRIVATE 等)本质上是 Go 工具读取的环境变量,在 VS Code 里也有两种方式设置
1️⃣ go.toolsEnvVars(影响插件内部命令)
"go.toolsEnvVars": {
"GOPROXY": "https://goproxy.baidu-int.com,direct",
"GOPRIVATE": "*.baidu.com",
"GOSUMDB": "sum.golang.org"
}- 生效范围:VS Code Go 插件内部执行的 Go 命令(
gopls、插件自带go build/test/run) - 不影响终端,所以在内置终端用
go env看到的值不会变
2️⃣ terminal.integrated.env.*(影响终端环境)
"terminal.integrated.env.linux": {
"GOPROXY": "https://goproxy.baidu-int.com,direct",
"GOPRIVATE": "*.baidu.com",
"GOSUMDB": "sum.golang.org"
}- 生效范围:VS Code 内置终端,或者插件中用终端执行的 Go 命令
- 打开新终端后,用
go env就能看到这些值
3️⃣ 系统级环境变量
- 你也可以在
~/.bashrc/~/.zshrc里设置:
export GOPROXY="https://goproxy.baidu-int.com,direct"
export GOPRIVATE="*.baidu.com"
export GOSUMDB="sum.golang.org"- 生效范围:所有终端、VS Code 终端、甚至脚本执行
✅ 总结
| 配置方式 | 生效范围 | 示例 |
go.toolsEnvVars | 插件内部命令(build/test/gopls 等) | "GOPROXY": "..." |
terminal.integrated.env.* | VS Code 内置终端 | "GOPROXY": "..." |
| 系统环境变量 | 全局终端、脚本 | export GOPROXY=... |
💡 提示:
- 推荐:VS Code 插件内部使用
go.toolsEnvVars,终端使用terminal.integrated.env.linux,这样插件和终端环境完全一致。 - 不要只改
**.vscode/settings.json**而不改终端,否则go env会看到不同值,可能导致调试/运行出错。
1.vscode的go有时候跳转不了函数的原因!
原因1.没有go的那个插件,如果有插件,那就是go的路径没配置好
原因2.没有vendor文件夹?
检查有没有vendor文件夹!!!
我的基本上就是因为,有他,然后就跳转不过去!!
当时之所以这样,好像是因为只有这样才能将我的go编译为二进制,部署到机器上去!
深层次的原因呢???为什么是vendor呢??因为你可能git pull了一次新的提交,依赖不一样了!
那我岂不是其实go mod vendor一下也可以???额,确实啊,我咋没想到,应该可以啊
其他知识
VS Code 中的跳转功能依赖 Go 的语言服务器 **gopls**,没有它基本功能就无法使用。
要谈 gopls,得先聊聊 LSP。LSP,全称 Language Server Protocol,即语言服务器协议,这是微软创建的一个协议(目前已有 Codenvy,Red Hat 和 Sourcegraph 等公司一起支持它的发展)。定义了在编辑器或 IDE 中与语言服务器之间使用的协议,该语言服务器提供诸如自动完成,转到定义,查找所有引用等语言功能。语言服务器索引格式(LSIF,其发音类似于“ else if”)的目标是支持开发工具或 Web UI 中的富代码导航,而不需要源代码的本地副本。
1.关于vscode 的go 插件详解
| 开发者 | 评价 | ||
| Go Nightly❌ | Go Nightly | 没啥用,一般nightly就是每日构建版本。特点呢,bug多,修bug快 - 不建议生产环境使用:由于其实验性特性,不建议在生产环境中使用 Go Nightly,以避免因插件不稳定导致的开发中断。 不如直接用 那个叫 Go 的插件 | |
| Go✅ | Go | 官方的 Go 插件 (**golang.go**) 更适合。相比 Go Nightly:- 稳定性高:更新周期较慢,但功能经过充分测试,几乎不会出现破坏性 bug。 - 兼容性好:与 VS Code 以及常用 Go 工具链兼容性更好,不用担心实验性功能带来的意外问题。 - 适合生产环境:日常开发和生产项目使用都不会有风险。 | |
| Go Mod Explorer✅ 挺好!能知道 go 的 SDK 还能直观的看到 mod 的位置 应该 goland 和 idea 大概也就这样了 | r3inbowari | ![]() | https://marketplace.visualstudio.com/items?itemName=r3inbowari.gomodexplorer |
| Golang Snippets❌ 【AI 时代,就不需要这玩意了,AI 补全更快了】 | Golang Snippets 是一款为 Visual Studio Code (VS Code) 提供 Go 语言代码片段的插件,旨在通过预定义的快捷模板提升开发效率。它由开发者 honnamkuan 创建 | ||
| Go Coverage Viewer✅ 【我觉得应该有用,特别公司的单测】 | 此扩展增加了通过一个简单的命令在VS Code中查看您的go覆盖结果的功能。 | - https://marketplace.visualstudio.com/items?itemName=defaltd.go-coverage-viewer | |
| Go Outliner✅ 【应该有用?好像是为了模仿 jetbrains 的 | Go Outliner将代码大纲(仅限Go项目)的活动栏图标添加到VS Code中。也可以通过将(goOutliner.extendExplorerTab)设置选项切换到true来扩展带有子节的主资源管理器选项卡。 | ![]() |

