sublime text 原生支持保存时自动删除行尾空格和制表符,只需在用户设置中启用 trim_trailing_white_space_on_save: true,无需安装 trailingspaces 插件;若不生效,需检查语法 scope、项目设置或插件覆盖;还可启用 trim_automatic_white_space: true 实现实时清理,并用内置命令 trim_trailing_white_space 手动清理。

直接开 trim_trailing_white_space_on_save 就行,别装插件
Sublime Text 原生支持保存时自动删行尾空格和制表符,trim_trailing_white_space_on_save 设为 true 即可生效,根本不需要 TrailingSpaces 插件——装了反而容易冲突、光标乱跳、保存时闪屏。
操作路径:Preferences → Settings – User,在右侧 JSON 里加这一行:"trim_trailing_white_space_on_save": true
- 必须写在用户设置(右侧)里,不是左侧默认设置
- 整段 JSON 要合法:用英文双引号,前后有
{},已有其他配置项时这行末尾要加英文逗号(但最后一项不能多逗号) - 改完 Ctrl+S 保存设置文件,无需重启 Sublime
- 它只清理非空行末尾的
和\t,不碰缩进、不删空行、不改行中空格
为什么开了还是不生效?优先级和语法类型压住了
常见现象:配置写对了,Ctrl+S 后空格还在。大概率是被更高优先级设置覆盖,不是你配错了。
- 看右下角显示的语法 scope(如
source.python、text.markdown),临时按 Ctrl+Shift+P 输入Set Syntax: Plain Text测试——如果这时能删,说明原语法设置了false - 检查项目根目录有没有
.sublime-project文件,里面是否写了"trim_trailing_white_space_on_save": false - 某些插件(如 LaTeXTools、MarkdownPreview)会在其语法定义里硬编码禁用该功能,得去对应插件的 Package Settings 里单独打开
- 别同时启用
trim_trailing_white_space_on_save和 TrailingSpaces 的trailing_spaces_on_save,两者冲突
想编辑中就实时清理?加一行 trim_automatic_white_space
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排除 - 该字段仅在 ST4 build 4140+ 支持,旧版本无效
手动一键清理老文件?用内置命令,别信插件快捷键
临时修一堆脏文件,或验证效果,别依赖插件命令。Sublime 自带的 trim_trailing_white_space 命令更稳、不依赖任何 package。
- 快捷键:Ctrl+Shift+P(Win/Linux)或 Cmd+Shift+P(macOS)→ 输入
Trim Trailing White Space→ 回车 - 它只删每行末尾的空格和制表符,不碰缩进、不删空行、不破坏
text.markdown的硬换行语法 - 想绑定快捷键?在 Key Bindings – User 里加:
{"key": "ctrl+alt+t", "command": "trim_trailing_white_space"} - 别用正则瞎搜
\s+$替换——容易误删缩进、YAML 对齐空格、Python return 前空格











