直接在用户设置右侧面板添加{"trim_trailing_white_space_on_save": true}即可生效,需确保JSON合法(英文双引号、逗号正确、大括号包裹),且不被项目设置、语法专属设置或插件覆盖。

直接在用户设置里加 "trim_trailing_white_space_on_save": true 就行,不需要插件,也不用写复杂 JSON 结构——但必须包在合法大括号里,且引号、逗号、位置全对,否则整个用户配置静默失效。
怎么写才真正生效(不是贴了就完事)
很多人复制粘贴后没反应,问题几乎都出在 JSON 格式或位置上:
- 必须改 Preferences → Settings 打开后的右侧「User」面板,左侧 Default 是只读的,改了也没用
- 整段内容必须是合法 JSON:
{"trim_trailing_white_space_on_save": true}—— 不能只有那一行,也不能漏掉前后大括号 - 如果已有其他设置(比如
"font_size": 12),新加这行末尾要加英文逗号,但最后一项后面不能多逗号 - 引号必须是英文双引号,中文引号、单引号、全角标点会让 Sublime 直接忽略整个用户设置文件,还不报错
- 保存该设置文件(Ctrl+S / Cmd+S)后立即生效,无需重启 Sublime
为什么 Ctrl+S 后空格还在?常见覆盖源
不是功能坏了,而是被更高优先级规则压掉了。Sublime 的配置优先级是:.sublime-project(项目) > 语法专属设置(如 Settings – Syntax Specific) > 用户设置。
- 右下角显示的语法类型(如
source.python、text.markdown)可能加载了专属设置,临时切到Plain Text测试一下就能确认 -
.sublime-project文件里写了"trim_trailing_white_space_on_save": false,它会直接禁用你的用户设置 - 装了
TrailingSpaces插件又同时开了原生选项,两者冲突会导致光标乱跳、保存时闪一下——建议二选一 - 某些插件(如
LaTeXTools、MarkdownPreview)在语法定义里硬编码禁用了该行为,得去对应插件的 Package Settings 里手动打开
想边写边清?加 trim_automatic_white_space
trim_trailing_white_space_on_save 只在保存时触发;如果你常手抖多打空格或 Tab,可以再加一行:
-
"trim_automatic_white_space": true—— 光标移出某行(比如按 →、Enter 或点击别处)时,立刻清理该行尾部空格和\t - 它不碰缩进、不删空行、不动行中空格,适合 Python/Go 等缩进敏感语言
- 但在
text.markdown中,两个空格 + 换行是硬换行语法;source.makefile行尾空格可能参与变量展开——这类场景建议用trim_trailing_white_space_on_save_exclude排除,而不是关掉自动清理
排除敏感语法:用 trim_trailing_white_space_on_save_exclude
全局开关不区分文件类型,但 Markdown、Makefile、LaTeX 等格式依赖行尾空格语义,误删会直接破坏逻辑。
- 这个字段只在 ST4 build 4140+ 支持,旧版无效
- 排除项写的是 Sublime 内部识别的 scope 名,不是文件后缀——查法:打开对应文件 → Ctrl+Shift+P → 输入
View Package File→ 看当前语法定义里的scope字段 - 典型值包括:
"text.markdown"、"source.makefile"、"text.tex" - 示例配置:
{"trim_trailing_white_space_on_save": true, "trim_automatic_white_space": true, "trim_trailing_white_space_on_save_exclude": ["text.markdown", "source.makefile"]}
真正容易被忽略的是 scope 名和文件后缀不一致——比如你编辑的是 README.md,但右下角显示的是 Markdown,实际 scope 是 text.markdown,写成 "*.md" 或 "markdown" 都不会生效。











