【问题标题】:Execute gofmt on file save in IntelliJ在 IntelliJ 中保存文件时执行 gofmt
【发布时间】:2015-11-18 08:24:48
【问题描述】:

我将 IntelliJ 与 Golang 插件一起使用。是否可以将 IDE 配置为在文件保存时执行 gofmt?

【问题讨论】:

标签: go intellij-idea goland


【解决方案1】:

当然可以。

  1. 安装File Watchers plugin
  2. 打开“首选项->工具->文件观察器”并添加新的观察器
  3. 设置File Type:Go,Program:gofmt的绝对路径,Arguments:-w $FilePath$
  4. 点击OK

【讨论】:

  • 这总是会重新格式化我的仓库中的每个文件,甚至是 Godeps/*。所以我改为硬编码我的路径。有什么方法可以使用 $FilePath$ 而无需每次都递归格式化存储库中的每个文件?似乎 FilePath 对我有多米诺骨牌效应。
  • @jayunit100 您可以配置 Scope 参数 1. 添加 local scope 2. 命名并设置 Pattern收件人:文件[$proj]:*/&&!file[$proj]:Godeps//* !snapshot
  • 这不允许我编辑我的文件。当我尝试添加新行来编写更多代码时,程序将我带回到上一行并删除我的新行。我该如何阻止呢?注意:使用 phpstorm
  • 没关系,我想通了。 “立即文件同步”将使 fmt 在您进行任何更改后立即运行。只需取消选择它,它只会在文件保存(或窗口失焦)时运行
  • 请注意,这个答案现在有点过时了:File Watchers 插件现在有一个预先构建的“go fmt”观察器,您可以添加而无需做太多工作。
【解决方案2】:

Gogland EAP 16 弃用了 On Save 操作并将其替换为 File Watchers plugin

如果您之前配置了 On Save 操作,IDE 将提示您安装插件并自动配置所有内容。如果您想自己从头开始设置,请检查您是否有 File Watchers 插件,如果没有安装它。

启用 gofmt:

  1. 转到Settings | Tools | File Watchers
  2. 点击+按钮并选择go fmt
  3. 默认值很好。
  4. 在高级选项中选择:
    • 自动保存编辑的文件以触发观察者
    • 触发外部变化的观察者
  5. 点击确定!

您可以对goimportsgometalinter 执行相同的操作。

【讨论】:

  • 实际上最好只设置 goimports 而不是 go fmt,因为它也执行 fmt,如 goimports 文档中所述:“除了修复导入之外,goimports 还以与 gofmt 相同的样式格式化您的代码所以它可以用来替代你的编辑器的 gofmt-on-save 钩子”
  • 这是截至 2018 年 10 月对 Goland 的正确答案
【解决方案3】:

2021 年 9 月更新。

如果您使用的是 2021.2 及更高版本(2021 年 7 月)的 GoLand,除了 File Watchers 之外,还有一些选项可以在保存时启用 gofmt。

  • Preferences/Settings | 下启用 Run gofmt on code reformat编辑 |代码风格 |去 |其他.
  • 首选项/设置下启用重新格式化代码 |工具 |保存操作.
  • 在 macOS 上按 Command + S 或在 Windows/Linux 上按 Ctrl + S 保存更改。

【讨论】:

【解决方案4】:

更新:

对于新版本的 Goland:

  1. 打开File->Settings->Tools->File Watchers
  2. 点击+按钮并选择go fmt
  3. Ok

完成:)

【讨论】:

    【解决方案5】:

    如果您使用的是 Gogland,您可以在首选项下选择 On Save

    【讨论】:

    • gogland 和 go 插件不一样。
    • 这和python plugin vs pycharm差不多。唯一可能的区别是更新滞后。除此之外 - 它为您提供完全相同的功能集。
    • 保存时机制已弃用,未来将被删除。改用 File Watchers 插件
    • 但即使在最新的 GoLand 中,我也看不到这个选项。我虽然右键单击文件名,在“Go”下,我可以 fmt 文件。但我没有看到在自动保存期间启用它的选项。
    猜你喜欢
    • 1970-01-01
    • 2011-03-18
    • 1970-01-01
    • 2011-04-09
    • 2017-11-14
    • 1970-01-01
    • 2022-01-21
    • 2019-05-20
    • 2015-09-06
    相关资源
    最近更新 更多