sublime原生支持一键清理尾随空格,只需在用户设置中添加"trim_trailing_white_space_on_save": true并确保json格式合法;该设置仅清理非空行末尾空格和制表符,不触碰缩进、空行及行中空格,且可能被语法专属设置、项目配置或trailingspaces插件覆盖。

直接改用户设置就能生效
Sublime 原生支持一键清理尾随空格,根本不用装插件。关键就一行:"trim_trailing_white_space_on_save": true,加到用户设置(Preferences → Settings 右侧面板)里,保存即用。
必须确保:
- 整个内容是合法 JSON,包裹在 {} 里
- 引号是英文双引号,不是中文或单引号
- 如果前面已有配置项,这行末尾要加英文逗号 ,,但最后一项后面不能多逗号
- 一定改右侧「User」面板,左侧 Default 不要碰
为什么 Ctrl+S 后空格还在?优先看这三处
配置没错但没反应,大概率是被更高优先级规则覆盖了:
- 右下角显示的语法类型(如
source.python、text.html)加载了专属设置,把全局配置压掉了;临时切到Plain Text测试一下就能确认 - 项目级配置(
.sublime-project)里写了"trim_trailing_white_space_on_save": false,它会直接禁用用户设置 - 装了
TrailingSpaces插件又同时开了原生选项,两者冲突会导致光标乱跳、保存时闪一下——建议二选一
想编辑中就清理?再加一行自动模式
只开 trim_trailing_white_space_on_save 是“攒着等保存才扫”,如果希望更即时,加这一行:"trim_automatic_white_space": true。
效果是:光标移出某行(比如按 →、Enter 或点击别处)时,立刻清理该行尾部空格和 \t。
注意:
- 它不碰缩进空格(比如 def foo(): 后面的缩进保留)
- 不删空行,也不动行中空格
- 在 text.markdown 中慎用:两个空格 + 换行是硬换行语法;source.makefile 行尾空格可能参与变量展开
临时清理老文件?用命令面板最稳
快捷键 Ctrl+Shift+P(Windows/Linux)或 Cmd+Shift+P(macOS),输入 Trim Trailing White Space 回车——立刻清理当前文件所有行尾空格和 \t,不依赖保存动作。
这个命令不会自动保存文件,执行后可以先对比差异再决定是否 Ctrl+S。
别用正则瞎试:\s+$ 可能误伤缩进,^\s*$ 是删空行的,不是删行尾空格。
真正容易被忽略的是:空格是否该删,本质取决于文件类型语义。比如 Markdown 的结尾空格、Makefile 的行尾空格、YAML 的缩进对齐——这些地方删错了,代码或文档就直接失效了。











