【问题标题】:Why does vscode delete golang source on save为什么vscode在保存时会删除golang源
【发布时间】:2018-01-06 05:29:04
【问题描述】:

为什么在带有golang扩展的vscode中不能保存这行代码

package app

import (
  "fmt"
)

//this is just func
func TestingHello(){
  fmt.Println("Hissssss")
}

只有package app 保留,其余部分在保存到 vscode 时被删除。

【问题讨论】:

  • 每个 golang 文件都会出现这种情况吗?尝试保存到另一个路径和/或另一个文件名?
  • 对我来说发生在错误检测到未使用的导入。因此,由于保存时使用了此智能自动删除代码,因此我可以免费构建失败。 :)

标签: go visual-studio-code vscode-settings


【解决方案1】:

在 settings.json 中同时配置 editor.formatOnSave 和 editor.codeActionsOnSave:

"[go]": {

        "editor.formatOnSave": false,
        "editor.codeActionsOnSave": {
            "source.organizeImports": false
        },
    },
    "go.formatTool": "gofmt",

【讨论】:

  • 这是一个更好的解决方案。谢谢
  • 是的,这个也对我有用。谢谢!!
  • 我非常喜欢这个答案,我想嫁给它。
【解决方案2】:

基本上,您的 formatOnSave 已开启,这会导致此问题。

要禁用它,请转到命令面板 (Ctrl+Shift+P),输入“配置语言特定设置”,然后查找 Go。

您现在应该会看到一个 json 文件,您可以在其中添加以下设置:

"editor.formatOnSave": false.

如果你只是为 go 修改了设置,这就是 json 文件的样子:

{
    "window.zoomLevel": 1,
    "[go]": {
        "editor.formatOnSave": false,
    }
}

【讨论】:

【解决方案3】:

在settings.json中Format Tool默认设置为“goreturns”,改成“fmt”:

{
    "go.formatTool": "gofmt"
}

现在您可以评论导入:

import (
    "fmt"
    // "reflect"
    // "math/rand"
)

【讨论】:

  • 谢谢!我尝试了 vscode 中所有可用的 go 格式工具。 goImports 和 goreturns “修复”了我的代码(它不会再编译),而 gofmt 和 goformat 不会。现在切换到 gofmt。
【解决方案4】:

我遇到了类似的问题,原因是方法名称的大小写不正确。

在下面的代码中import "fmt"会消失。

package main

import "fmt"

func main() {
  fmt.println("hello world")
}

解决方案我应该打电话给Println println!注意大写的P。更改后 goreturns 添加导入而不是删除它。

【讨论】:

  • 我花了几个小时试图弄清楚这一点,但没有意识到这是一个大写的 P。谢谢!
  • @seanleroy 真的很高兴它帮助了某人:)
【解决方案5】:

这似乎很奇怪。
我可以理解导入消失(如issue 748),因为goreturns (github.com/sqs/goreturns) 删除了未使用的导入。但这不适用于您的情况。

但如果几乎所有内容都消失了,则意味着文件无法保存,无法恢复为原始内容。
可能另一个进程正在处理该文件,从而阻止保存操作继续进行。

【讨论】:

    【解决方案6】:

    Ctrl+Shift+P --> 配置语言特定设置

           "editor.insertSpaces": false,
            "editor.formatOnSave": **false,**
            "editor.codeActionsOnSave": {
                "source.organizeImports": **false**
            }
        }
    }
    

    【讨论】:

      【解决方案7】:

      之所以会出现这种情况,是因为你导入的东西,你没有在程序中使用,所以Golang删除了不必要的依赖。

      【讨论】:

        【解决方案8】:

        在 VScode 上只需按 (CTRL + SHIFT + P )。

        然后,点击“配置特定语言设置” 并选择 GO 语言。

        只需粘贴代码

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2022-09-29
          • 2017-12-08
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2022-12-30
          • 2018-03-24
          • 2021-06-15
          相关资源
          最近更新 更多