如何在保存时设置VSCode格式化Golang代码?

38
我正在使用 vscodeGo 扩展程序编辑 golang 源代码。每次想格式化代码时,我必须在 linux 上按下 Ctrl-Shift-i,在 Windows 上按下 Shift-Alt-F 或在按下 Ctrl-Shift-p 并键入 format。是否可以设置在保存时自动格式化代码,即当我按下 ctrl-s 时,它会使用 go.fmt(或类似工具)自动格式化代码?
4个回答

35

对我来说,所有的答案都没有起作用。我的 Go 版本是 1.17.1,VSCode 版本是 1.60.1,我使用的是 Linux Pop!_os。

在网上找到了官方 VSCode 文档中关于 Go 的信息。https://code.visualstudio.com/docs/languages/go#_formatting

我的 settings.json 看起来像这样

"[go]": {
    "editor.insertSpaces": true,
    "editor.formatOnSave": true,
    "editor.defaultFormatter": "golang.go"
},

注意:您需要在 VS Code 中为 Go 语言安装所需的扩展。打开 *.go 文件后,请检查左下角状态栏,应该能看到 Go 版本。如果看到一个感叹号图标,请点击它并安装建议的扩展。

2
"editor.defaultFormatter" 是我所缺失的 - 谢谢! - Michał Droździk
这个完美地运作了。太棒了! - DanteDX
"editor.defaultFormatter"的效果非常好!谢谢。 - Thach Van

26
从我的Visual Code版本来看,我无法使用配置go.formatOnSave": false。然后我可以在设置中关闭它们,如下所示:
- 构建(使用go.buildOnSave设置关闭) - Lint(使用go.lintOnSave设置关闭) - Vet(使用go.vetOnSave设置关闭) - 格式化(通过在设置中添加以下内容进行关闭):
"[go]": {
    "editor.formatOnSave": false 
}

1
对于Windows系统:如果你在VSCode里找不到它,那就去%APPDATA%/Roaming/Code/User/settings.json手动编辑它。这很有效,因为我不知道如何为.go文件设置自己的格式。 - Preonix
"[go]": { "editor.formatOnSave": false } 将以上内容添加到我的usersettings.json文件中,这是解决问题的方法。谢谢。 - Tina T

24

您应该安装这个插件: https://github.com/golang/vscode-go。其中一个选项是设置在保存时自动格式化: go.formatOnSave": false。它使用Golang工具进行格式化。


2
非常感谢。实际上,在提问之前我正在使用这个插件,但是我没有找到设置选项。"go.formatOnSave": true解决了问题。我认为默认设置应该是true而不是false - Nick
1
另一件你应该考虑的事情是将"go.formatTool"从"go fmt"更改为"goimports"(并安装goimports)。让它管理你的导入非常方便(尽管要小心使用,确保它导入了正确的内容)。 - UziMonkey
3
不适用于我,查看下面的答案。 - Nearoo

9

对于我来说,以下设置是有效的。我禁用了烦人的导入重构。

"[go]": {
    "editor.formatOnSave": true,
    "editor.codeActionsOnSave": {
        "source.organizeImports": false
    },
}

谢谢。这个进口组织者真是让人烦透了。 - undefined

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接