atom保存时自动删除行尾空格的元凶是whitespace插件默认开启trim_trailing_whitespace,该行为会破坏markdown换行、python字符串校验等场景,需按优先级顺序关闭:文件内设置→.editorconfig→插件ui→全局配置,并注意editorconfig插件的auto indent也可能触发清理。

whitespace 插件是自动删行尾空格的元凶
Atom 保存时自动删掉每行末尾空格,90% 是 whitespace 插件干的——它默认开启 trim_trailing_whitespace,不是 bug,是设计行为。但这个“干净”对 Markdown(两个空格换行)、Python 字符串校验、日志字段对齐等场景就是破坏性操作。
常见错误现象包括:
- 写完
hello(两个空格)保存后变成hello,Markdown 预览不换行 - 复制粘贴带末尾空格的命令(如
curl -X POST)保存后失效 - Git diff 里满屏 “- trailing whitespace” 提交,掩盖真实变更
关掉 trim_trailing_whitespace 的三个关键位置
不能只关 UI 开关,whitespace 的行为受多层配置叠加控制,优先级从高到低是:文件内设置 → .editorconfig → 插件 UI 开关 → Atom 全局 core.trimTrailingWhitespace。必须按顺序排查:
- 进
Settings → Packages → whitespace → Settings,取消勾选Trim Trailing Whitespace - 如果编辑的是
.md文件,顺手勾上Keep Markdown Line Break Whitespace(专为两个空格换行留白) - 检查项目根目录是否有
.editorconfig,里面若有trim_trailing_whitespace = true,改成false;或针对 Markdown 单独加段落:[*.md]\ntrim_trailing_whitespace = false
editorconfig 插件本身也会偷偷删空格
哪怕 whitespace 插件已禁用,只要 editorconfig 插件启用且 .editorconfig 存在,它仍会执行清理——这是最容易被忽略的坑。
editorconfig 插件有个隐藏开关:Auto Indent。某些版本下,它不光管缩进,还会连带触发空格清理。直接关掉这个选项,比调 whitespace 设置还管用。
临时验证方法:禁用所有格式化类插件(prettier-atom、atom-beautify、clang-format),只留 whitespace 和 editorconfig,再测试保存行为。
为什么有时关了还是删?配置优先级没理清
Atom 处理行尾空格不是简单的“开/关”,而是规则叠加生效。比如你在 config.cson 里写了:
'*.md':\n core:\n trimTrailingWhitespace: false,这属于“文件内显式设置”,优先级最高;而
.editorconfig 里的设置次之;插件 UI 开关只是第三层。最常踩的坑是:改了插件 UI,却忘了 .editorconfig 还在生效;或者关了 whitespace,但 editorconfig 插件的 Auto Indent 没关,结果空格照删。











