goland保存时删尾随空格的开关在settings/preferences → editor → general → strip trailing spaces on save,需设为none并检查项目级override设置及.editorconfig、外部工具等干扰项。

GoLand 保存时删尾随空格的开关在哪
GoLand 默认开启 Strip trailing spaces on Save,但这个行为不是“格式化”而是独立的文本清理动作。它和 gofmt、goimports 无关,也不走代码风格配置路径——它藏在通用编辑器设置里。
- 打开 Settings/Preferences → Editor → General
- 找到
Strip trailing spaces on Save下拉框 - 选
None就彻底关闭;选All Lines或Modified Lines Only才会触发删除 - 注意下方有个
Override global settings for this project复选框——如果勾了,项目级设置会压倒全局设置,必须一并检查
为什么关了还删空格?优先级干扰链
即使你把 Strip trailing spaces on Save 设为 None,空格仍被删,大概率是以下三类覆盖生效:
GoLand 2026.1.1 是 2026.1 发布后的首个维护修正版本,适合已经开始体验 2026.1 新功能并希望同步补丁的开发者。它更适合用于入门项目、现有项目迁移测试和 IDE 行为验证。
-
.editorconfig文件里写了trim_trailing_whitespace = true—— EditorConfig 插件会强制接管,把它改成false或删掉该行 - 启用了外部格式化工具(比如
gofumpt或prettier),它们内部可能自带 trim 行为;查 Settings → Tools → External Tools 或对应插件配置 - Git 配置了
core.whitespace = trailing-space并启用git config --global core.autocrlf true类似选项,这发生在 commit 阶段,和 IDE 无关但现象一致
按文件类型差异化控制空格策略
某些场景下你希望保留特定类型文件的尾随空格,比如 .md 表格对齐、.sh 中的缩进语义,而 Go 文件仍需清理。GoLand 支持按语法类型精细控制:
- 在 Settings → Editor → General → Strip trailing spaces on Save 页面,点击右侧
Configure per file type… - 在弹出窗口中,找到
Markdown或Shell Script,把对应项设为Do not strip - Go、Java 等语言可保持
All Lines或Modified Lines Only - 注意:语言 ID 必须匹配(右下角状态栏显示的是
go而不是Plain Text),否则规则不加载
空行里的空格到底删不删
GoLand 的 Strip trailing spaces on Save 默认会处理空行末尾的空格,即 \n␣␣\n → \n\n。这点常被误认为“没生效”,其实它删了,只是空行还在。
- 要连空行一起删(即压缩连续空行),得靠其他机制:
Editor → General → Other → Remove trailing blank lines是单独开关,需手动开启 - Git diff 和 CI 工具(如
pre-commit)通常只校验尾随空格,不关心空行数量,所以一般不用动这一项 - 真正麻烦的是混合缩进(空格+Tab)或行首空格——那属于缩进检测范畴,由
Editor → Code Style → Go → Tabs and Indents控制,和尾随空格无关










