直接在用户设置json中设trim_trailing_white_space_on_save: true即可生效,但需确保语法正确、未被项目/语法设置覆盖,且排除列表仅st4 build 4140+支持。

直接在用户设置里加 trim_trailing_white_space_on_save: true 就能生效,不需要装插件、不用重启、保存即清理——但配错 JSON 格式或被项目/语法设置覆盖,它就完全不干活。
怎么写才真正生效
必须改 Preferences → Settings 右侧「User」面板里的 JSON,不是左侧 Default 或插件配置:
-
trim_trailing_white_space_on_save必须是布尔值true,不能加引号写成"true" - 整段内容得是合法 JSON:用英文双引号、前后包在
{}里、已有配置项末尾要加英文逗号(最后一项后面不能多逗号) - 别把它塞进字符串值里,比如不要写成
"font_size": 12, "trim_trailing_white_space_on_save": true却漏了开头的{和结尾的} - 改完一定要按 Ctrl+S(Windows/Linux)或 Cmd+S(macOS)保存该设置文件
为什么保存后空格还在
几乎都不是配置写错了,而是被更高优先级规则压掉了:
- 右下角显示的语法类型(如
source.python、text.markdown)可能加载了 Syntax Specific 设置,把全局配置覆盖了;临时切到Plain Text测试一下就能确认 - 项目根目录有
.sublime-project文件,里面写了"trim_trailing_white_space_on_save": false,它会直接覆盖用户设置 - 装了
TrailingSpaces插件又同时开了原生选项,两者冲突会导致光标乱跳、保存时闪一下——建议二选一 - 某些插件(如
LaTeXTools、MarkdownPreview)在语法定义里硬编码禁用了该行为,得去对应插件的 Settings 里手动打开
想边写边清,或者排除特定文件类型
只开 trim_trailing_white_space_on_save 是“攒着等保存才扫”,如果希望更即时,再加一行:
-
trim_automatic_white_space: true —— 光标移出某行(比如按 →、Enter 或点击别处)时,立刻清理该行尾部空格和\t,但不碰缩进、不删空行、也不动行中空格 -
trim_trailing_white_space_on_save_exclude: ["text.markdown","source.makefile","text.tex"] —— 排除依赖行尾空格的语法类型;注意填的是 scope 名(右下角显示的名称),不是文件后缀 - 这个排除列表只在 ST4 build 4140+ 支持,旧版无效
最容易被忽略的是作用边界:它只删非空行末尾的空格和制表符,不处理纯空行、不删行首缩进、也不动行中空格。真要激进清理(比如删空行、删中间多余空格),得靠正则或插件,原生不支持。











