sublime text 中 trim_trailing_white_space_on_save 配置需写在 user 设置的合法 json 内,用英文双引号,注意逗号与语法作用域覆盖关系;另可启用 trim_automatic_white_space 实时清理或使用 trim trailing white space 命令手动清理。

trim_trailing_white_space_on_save 配置必须写对位置和格式
直接生效,不需要插件,但错一个字符就静默失效。打开 Preferences → Settings,只改右侧「User」面板里的内容,左侧 Default 不要碰。
确保整个内容是合法 JSON:
-
"trim_trailing_white_space_on_save": true必须包在{}里,不能单独一行 - 引号必须是英文双引号,中文引号、单引号、全角标点都会让整段设置被 Sublime 忽略
- 如果已有其他配置项,这行末尾要加英文逗号
,;但最后一项后面不能多逗号 - 保存设置文件(
Ctrl+S或Cmd+S),无需重启
为什么保存后空格还在?优先排查三类覆盖关系
不是配置错了,而是被更高优先级规则压掉了。先看右下角显示的语法类型(比如 source.python、text.html),它可能加载了专属设置。
- 项目级配置(
.sublime-project)里写了"trim_trailing_white_space_on_save": false—— 它会直接禁用用户设置 - 插件如
LaTeXTools、MarkdownPreview或TrailingSpaces可能在其语法定义或设置中显式设为false - 当前文件是
Plain Text或自定义语法时,Sublime 4 默认不触发该行为;临时切换成Python或JavaScript测试是否生效
想编辑中就清理?加 trim_automatic_white_space 即可
它和 trim_trailing_white_space_on_save 独立工作,光标移出某行(按 →、Enter 或点击别处)就立刻删掉该行尾部空格和 \t,不碰缩进、不删空行、不动行中空格。
- 适合边写边洁癖,尤其 Python/Go 这类缩进敏感语言
- 但在
text.markdown中慎用:两个空格 + 换行是硬换行语法;source.makefile行尾空格可能参与变量展开 - 若需局部禁用,打开一个
.md文件 →Preferences → Settings – Syntax Specific→ 加"trim_trailing_white_space_on_save": false
临时清理老文件?用内置命令,别手写正则
快捷键最稳:Ctrl+Shift+P(Windows/Linux)或 Cmd+Shift+P(macOS),输入 Trim Trailing White Space 回车。它立即清理当前文件所有行尾空格和 \t,不依赖保存动作。
- 这个命令不会自动保存文件,执行后可以先对比差异再决定是否
Ctrl+S - 别用正则瞎试——比如
^\s*$是删空行的,不是删行尾空格;误用\s+$可能伤到缩进或 YAML 块结构 - 如果常用,可绑定快捷键:
Preferences → Key Bindings用户侧加[{"keys": ["ctrl+alt+t"], "command": "trim_trailing_white_space"}]
source.python 下自动清理,在 text.plain 下可能完全不响应,而你根本没意识到语法标签已经变了。











