VScode 保存时格式化功能在 Golang 中不起作用。

6

我正在使用vscode通过remote-ssh开发go项目。然而,在保存时格式化功能不起作用。我发现它在没有git的普通项目上可以正常工作。如果我删除.git,它将按预期工作。有人能给我一些建议吗?

环境版本如下:

  1. vscode 1.63.2
  2. go 1.17.6
  3. 远程机器Ubuntu 20.04
  4. go扩展v0.30.0

你的设置怎么样?如果你看到了语言服务器跟踪(请参见 https://github.com/golang/vscode-go/blob/master/docs/troubleshooting.md#collect-gopls-information),是否有格式化请求/响应消息日志? - Hana
@hana 谢谢。我已经查看了输出日志。没有与格式相关的日志。这是 vscode 的配置:{ "editor.formatOnSave": true, "go.alternateTools": { // "dlv": "${workspaceFolder}/.vscode/dlv-sudo.sh", // "dlv-dap": "${workspaceFolder}/.vscode/dlv-dap-sudo.sh" }, "go.languageServerFlags": [ "-rpc.trace" ], "gopls": { "verboseOutput": true } } - WingPig99
2个回答

9

最近我也遇到了同样的问题,自动格式化仅适用于没有.git目录的项目。解决该问题的方法是将“保存时进行格式化”模式从modificationsIfAvailable更改为file。由于在所有情况下我更喜欢使用modificationsIfAvailable而非file,因此我使用以下方式将formatOnSaveMode仅更改为file(对于go源代码文件):

 "[go]": {
    "editor.formatOnSaveMode": "file"
  }

1
谢谢!我将我的顶级设置为"editor.formatOnSaveMode": "modificationsIfAvailable",以避免对小的编辑重新格式化整个文件。看起来golang扩展不知道如何处理该模式。 - Mat Schaffer

5

尝试通过按下Ctrl + Shift + P手动格式化您的代码,打开命令面板并选择“格式化文档”。如果您的文件能够正确格式化而不出现任何问题,则意味着formatOnSave设置存在问题。

选择默认格式化程序,而不是空值。例如:

"editor.defaultFormatter": "esbenp.prettier-vscode"

逐一卸载其他格式化程序,看是否有任何冲突。

尽量使其与语言相关。

为了更好的理解,请参考此链接:https://github.com/microsoft/vscode/issues/108447

关于Git特定:

可能是因为您正在运行 Git Atom 。Atom是一个桌面应用程序,因此可能会在访问远程安装路径时导致问题。请尝试安装 Git Repo

还要确保 Go:安装/更新工具 已经更新到最新版本。


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