vim-go 在写入磁盘时删除未使用的代码

Lea*_*cim 1 vim go

我已将多个包导入到我正在使用 Vim 和 Vim-Go 插件编写的 Go 包 ( package commands) 中的文件中(遵循 golang 教程)。其中有几个包还没有使用过。当我保存文件时:w,Vim 似乎正在删除未使用的包,这真的很烦人,因为这些未使用的包将被使用。我只是没有为它们添加必要的代码。有没有办法在 Vim-Go 中关闭此功能,或者我是否必须删除整个插件才能摆脱这种烦人的行为?

写之前

package commands
import (
    "fmt"
    "os"
    "time"

    rss "github.com/jteeuwen/go-pkg-rss"
    "github.com/spf13/cobra"
    "github.com/spf13/viper"
)
Run Code Online (Sandbox Code Playgroud)

保存后

import (
    "github.com/spf13/cobra"
    "github.com/spf13/viper"
)
Run Code Online (Sandbox Code Playgroud)

Sim*_*ead 5

这是因为您正在使用goimports作为格式化 go 代码时使用的工具(我认为 vim-go 默认情况下会执行此操作 - 并且默认情况下会在保存时格式化代码)。goimports为您删除未使用的导入..这就是它如此出色的原因。总有一天你会学会爱上它:)

现在,您想要使用的是gofmt格式化代码,这不涉及导入 - 它仅格式化代码。您可以将其放入您的.vimrc

let g:go_fmt_command = "gofmt"
Run Code Online (Sandbox Code Playgroud)

goimports如果您决定在完成上述操作后手动运行您的文件..您可以运行:GoImports.

如果您愿意,您还可以选择另一个选项:您可以通过将其放入您的:来关闭保存时的格式设置.vimrc

let g:go_fmt_autosave = 0
Run Code Online (Sandbox Code Playgroud)

然后,您仍然可以goimports在格式化代码时使用..但它不会在保存时自动执行此操作。

  • 谢谢,在我看来,这是非常奇怪的默认行为,因为它不鼓励频繁保存文件,除非您强迫自己采取仅在使用代码后导入包的奇怪行为,这在 go 中绝对是愚蠢的,因为您可以为包指定自定义名称您需要在OP中的代码中使用(例如,参见“rss”) (2认同)