为什么vscode在保存时删除golang源

Kno*_*ing 3 go visual-studio-code vscode-settings

为什么不能用golang扩展将这些代码行保存在vscode中

package app

import (
  "fmt"
)

//this is just func
func TestingHello(){
  fmt.Println("Hissssss")
}
Run Code Online (Sandbox Code Playgroud)

package app保存时,只有剩余部分和剩余部分在vscode中删除。

Blu*_*eel 27

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

"[go]": {

        "editor.formatOnSave": false,
        "editor.codeActionsOnSave": {
            "source.organizeImports": false
        },
    },
    "go.formatTool": "gofmt",
Run Code Online (Sandbox Code Playgroud)

  • 这是一个更好的解决方案。谢谢 (3认同)
  • 我非常喜欢这个答案,我想嫁给它。 (2认同)

Ped*_*dro 10

默认情况下,格式工具在 settings.json 中设置为“goreturns”,将其更改为“fmt”:

{
    "go.formatTool": "gofmt"
}
Run Code Online (Sandbox Code Playgroud)

现在您可以评论导入:

import (
    "fmt"
    // "reflect"
    // "math/rand"
)
Run Code Online (Sandbox Code Playgroud)


Gur*_*niX 9

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

       "editor.insertSpaces": false,
        "editor.formatOnSave": **false,**
        "editor.codeActionsOnSave": {
            "source.organizeImports": **false**
        }
    }
}
Run Code Online (Sandbox Code Playgroud)


Ger*_*rry 7

我有一个类似的问题,是由于方法名称的大小写不正确造成的。

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

package main

import "fmt"

func main() {
  fmt.println("hello world")
}
Run Code Online (Sandbox Code Playgroud)

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

  • 我花了几个小时试图弄清楚这一点,但没有意识到这是一个大写的 P。谢谢! (2认同)

Von*_*onC 6

这看起来很奇怪。
我可以理解导入消失(如问题 748中),因为goreturns( github.com/sqs/goreturns)删除了未使用的导入。但这不应该适用于你的情况。

但如果几乎所有内容都消失了,则意味着文件无法保存并恢复到其原始内容。
也许另一个进程正在保留该文件的句柄,从而阻止保存操作继续进行。


小智 6

基本上,您的formatOnSave处于打开状态,这会导致此问题。

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

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

“ editor.formatOnSave”:否。

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

{
"window.zoomLevel": 1,
"[go]": {
    "editor.formatOnSave": false,
}
Run Code Online (Sandbox Code Playgroud)

}

希望能有所帮助

  • 谢谢伙计,你节省了我的时间 (2认同)