必须在preferences → settings右侧user面板的json中正确配置"trim_trailing_white_space_on_save": true,并确保语法合法、逗号规范、保存生效;若无效,常因语法特定设置、项目文件覆盖或插件冲突所致。

直接加 trim_trailing_white_space_on_save 就行,不用插件、不重启、保存即生效——但配错位置或格式,它就完全不干活。
怎么写才真正生效
必须改 Preferences → Settings 右侧「User」面板里的 JSON,不是左侧 Default;整段内容得是合法 JSON:
-
"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 - 它不碰缩进空格(比如函数体内的
return x前的空格)、不删空行、也不动行中间空格 - 但在
text.markdown中,两个空格 + 换行是硬换行语法;在source.makefile中,行尾空格可能参与变量展开——这类场景建议用trim_trailing_white_space_on_save_exclude排除
最容易被忽略的是作用边界:它只删非空行末尾的空格和制表符,不处理纯空行、不删行首缩进、也不动行中空格。真要激进清理,得靠正则或插件,原生不支持。











