在IntelliJ中执行gofmt文件保存

Myl*_*ell 73 intellij-idea go goland

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

yee*_*yee 108

当然可以.

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

在此输入图像描述

  • 没关系,我想通了."立即文件同步"将使您在进行任何更改后立即运行fmt.只是取消选择它,它只会在文件保存(或窗口非聚焦)上运行 (6认同)
  • 这总是重新格式化我的仓库中的每个文件,甚至是Godeps/*.所以我改编了我的路径.有没有办法使用$ FilePath $而不是每次递归格式化repo中的每个文件?好像FilePath对我有多米诺骨牌效应. (4认同)
  • 注意,这个答案现在有些过时了:File Watchers 插件现在有一个预先构建的“go fmt”观察器,您无需做太多工作就可以添加。 (2认同)

Aru*_*uri 55

如果您使用的是Gogland,则可以在"首选项"下选择"保存"

在此输入图像描述

  • On Save机制已弃用,将来将被删除.请改用File Watchers插件 (23认同)
  • 这应该标记为正确的答案 (5认同)
  • 但即使在最新的GoLand中,我也看不到这个选项.我在右键单击文件名时,在"Go"下,我可以fmt文件.但我没有看到在自动保存期间启用它的选项. (3认同)

Dav*_*uel 46

Gogland EAP 16弃用了On Save操作,并将其替换为File Watchers插件.

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

启用gofmt:

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

配置

你可以为goimports和做同样的事情gometalinter.

  • 实际上最好只设置goimports而不是go fmt,因为它也执行fmt,如goimports文档中所指定的:"除了修复导入之外,goimports还以与gofmt相同的样式格式化代码,因此它可以用作替代品为你的编辑器的gofmt-on-save钩子" (5认同)
  • 截至2018年10月,这是Goland的正确答案 (2认同)