atom保存时自动删除行尾空格是whitespace插件默认行为,需关闭trim trailing whitespace选项,并检查.editorconfig及prettier-atom等格式化插件干扰。

Atom 保存时自动删行尾空格,不是 bug,是 whitespace 插件默认行为 —— 但它的“合理”会破坏 Markdown 换行、日志对齐、字符串校验等真实场景。
whitespace 插件的 trim_trailing_whitespace 是元凶
它默认开启,一按 Ctrl+S 就清掉每行末所有空格(包括 Markdown 需要的两个空格换行)。这不是偶然触发,是插件设计如此。
- 关闭路径:
Edit → Preferences → Packages → whitespace → Settings,取消勾选Trim Trailing Whitespace - 如果编辑的是
.md文件,顺手勾上Keep Markdown Line Break Whitespace—— 但它在某些 Atom 版本中不可靠,别全信 - 注意:这个开关只影响 whitespace 插件自身行为,不关其他插件的事
.editorconfig 里 trim_trailing_whitespace = true 也会强制清理
哪怕 whitespace 插件已关,只要项目根目录存在 .editorconfig,且其中写了 trim_trailing_whitespace = true,Atom 的 editorconfig 插件仍会执行清理。
- 全局禁用:把那行改成
trim_trailing_whitespace = false - 按文件类型控制:加段落,比如
[*.md]\ntrim_trailing_whitespace = false - 检查是否生效:删掉
.editorconfig后重启 Atom 测试,能快速确认是不是它在干预
其他格式化插件可能悄悄补刀
prettier-atom、atom-beautify、clang-format 这些插件常在保存时顺手“整理”空白,它们的配置优先级可能高于 whitespace,且错误提示不明显。
- 临时排查法:禁用所有格式化类插件,只留
whitespace和editorconfig,再测试保存行为 - 特别注意
clang-format:C++ 项目里它可能把vector<vector> ></vector>改成vector<vector>></vector>,表面像空格问题,实则是语法重写 - 不要依赖“看起来没动”,用
git diff --ignore-space-at-eol或直接 hexdump 查看实际字节变化
最易被忽略的一点:多个插件叠加生效时,你关掉一个,另一个立刻顶上;而 Atom 不会在界面上告诉你“此刻是谁动了你的空格”。得靠排除法+二进制验证,才能真正锁死源头。










