GoLand 无真正一键全局格式化按钮,需手动设范围;推荐用 Code → Format Code… + 自定义 Scope(如 file:*/.go)并勾选 Optimize imports、取消 Reformat changed files only。

GoLand 没有真正意义上的“一键全局格式化整个项目所有文件”的按钮,必须手动指定范围并确认参数,否则会误触 vendor、testdata 或非 Go 文件。
用 Code → Format Code… 批量处理项目内所有 .go 文件
这是最可控、最常用的方式,本质是限定 Scope 后批量调用 gofmt(或你配置的替代工具):
- 点击顶部菜单 Code → Format Code…(快捷键
Ctrl+Alt+L/Cmd+Alt+L) - 在弹出窗口中,Scope 选
Project——但注意:这会包含项目根目录下所有文件类型,不只是.go -
强烈建议改用自定义 Scope:点击右侧
…→Add Scope→ 命名如Go Files Only→ Pattern 填file:/**/*.go→ 点击 OK - 勾选
Optimize imports(自动增删/排序 import),但需确保项目有有效go.mod,否则可能报错no required module provides package -
务必取消勾选
Reformat changed files only,否则 Git 未追踪的新文件会被跳过
为什么直接选 Project Scope 很危险
选 Project 后,GoLand 默认把 vendor/、testdata/、docs/ 甚至 go.sum 都纳入范围——而 gofmt 对非 Go 文件静默失败,对 vendor/ 却会真去改写,导致依赖锁定被破坏:
GoLand 2026.1.1 是 2026.1 发布后的首个维护修正版本,适合已经开始体验 2026.1 新功能并希望同步补丁的开发者。它更适合用于入门项目、现有项目迁移测试和 IDE 行为验证。
-
vendor/下的代码通常来自不同 Go 版本,gofmt可能因语法不兼容报错,也可能成功修改但引入不可控换行 - 如果项目用了
go.work,ProjectScope 还可能跨 module 扫描,进一步扩大风险面 -
go fmt ./...CLI 命令默认不进vendor,但 IDE 的ProjectScope 没这层保护
想用 gofumpt 替代默认 gofmt?别只改 Formatter 设置
仅在 Settings → Editor → Code Style → Go → Formatter 中填入 gofumpt 路径,**不会让 Format Code… 对话框生效**——那个对话框始终走内置逻辑或 gofmt:
- 真正起作用的是:External Tool + 快捷键绑定。进
Settings → Tools → External Tools,新增一项:
Program:gofumpt
Arguments:-w $FilePath$
Working directory:$ProjectFileDir$ - 然后给它分配快捷键(如
Ctrl+Shift+Alt+F),再全选项目 → 右键 →External Tools → gofumpt,才能批量跑 - 注意:
gofumpt -w不支持通配符路径,所以不能直接传./...;必须靠 IDE 遍历文件后逐个调用
保存时自动格式化 ≠ 全局批量处理,别混淆场景
Settings → Tools → Save Actions → Format on save 只对当前编辑并保存的文件生效,哪怕你打开 50 个 tab,也只会格式化那几个刚存的文件:
- 它不扫描目录、不读取文件列表、不触发批量逻辑
- 如果你希望“一保存就顺手把整个
internal/目录都刷一遍”,这功能做不到——得用 CLI:gofumpt -w internal/ - Save Actions 的
Optimize imports on save也只作用于当前文件,且依赖goimports或gofumpt配置正确;纯gofmt下该选项是灰色禁用的
真正的“全局”操作永远需要人工确认范围和工具链,IDE 不会替你承担 vendor 被改、CI 格式检查失败、或同事 pull 后满屏 diff 的后果。

















