Atom行尾空格被自动删除的元凶通常是whitespace插件,默认开启Trim Trailing Whitespace;需在插件设置中取消勾选该选项,并检查.editorconfig及prettier-atom等格式化插件是否叠加干预。

whitespace 插件是默认凶手
Atom 里行尾空格被自动删掉,whitespace 插件几乎总是元凶——它默认开启 trim_trailing_whitespace,一保存就清空所有行末的 和 \t。这不是 bug,是设计使然;但对 Markdown(两个空格换行)、日志字段、带空格的 shell 命令等场景,就是实打实的破坏。
常见错误现象:
- 写完
hello(两个空格)保存后变成hello,Markdown 预览不换行 - 复制粘贴含末尾空格的路径或命令,保存后执行失败
- Git diff 里全是“删空格”,掩盖真实变更
关它的方法很直接:
- 【Edit】→【Preferences】→【Packages】→ 搜索
whitespace→ 点【Settings】 - 取消勾选
Trim Trailing Whitespace - 如果是 Markdown 文件,顺手勾上
Keep Markdown Line Break Whitespace
.editorconfig 会偷偷接管
哪怕 whitespace 插件关了,只要项目根目录存在 .editorconfig,且里面写了 trim_trailing_whitespace = true,Atom 的 editorconfig 插件仍会照常清理。
检查和修复步骤:
- 打开项目根目录下的
.editorconfig - 找到
trim_trailing_whitespace = true这行 - 改成
trim_trailing_whitespace = false(全局禁用) - 或只对特定类型禁用,比如加一段:
[*.{md,txt}]
trim_trailing_whitespace = false
注意:这个配置优先级高于插件设置,不改它,关插件也没用。
其他格式化插件可能叠加干扰
prettier-atom、atom-beautify 或 clang-format 这类插件,在保存时也可能顺手 trim 行尾空格,尤其当它们的配置没显式关闭该行为时。
排查建议:
- 临时禁用所有非必要格式化插件
- 只留
whitespace和editorconfig,再测试保存行为 - 确认问题消失后,逐个启用插件,定位具体责任方
比如 prettier-atom 的 prettierOptions 里若含 "trimTrailingWhitespace": true,就得手动设为 false。
想一键手动清理?别依赖快捷键
Atom 没有像 Sublime 那样内置 trim_trailing_white_space 命令,也没有原生快捷键支持「当前文件一键清理」。强行绑定快捷键只能靠第三方插件(如 trailing-spaces),但容易和已有插件冲突。
更稳妥的做法:
- 用查找替换:Ctrl+Shift+F → 启用正则 → 查找
[ \t]+$→ 替换为空 → 全部替换 - 或装轻量插件
trailing-spaces,它提供命令trailing-spaces:trim-trailing-spaces,可绑定快捷键 - 不推荐长期开着自动 trim,除非你 100% 确认所有文件都不依赖行尾空格
真正麻烦的不是怎么删,而是删完之后谁来负责还原——尤其当空格本身承载语义(比如 Markdown 换行、固定宽字段填充)时,自动清理等于悄悄改数据。

















