Sublime Text 原生支持一键清理行尾空格,需在用户设置中正确配置 "trim_trailing_white_space_on_save": true(JSON 格式、英文双引号、布尔值 true),并注意配置优先级与插件冲突;手动清理可用内置命令 Trim Trailing White Space 或正则 [\t ]+$,删空行则用 ^\s*$。

Sublime Text 原生就支持一键清理行尾空格,根本不需要插件——关键不是“怎么装”,而是“怎么配对”和“什么时候生效”。
trim_trailing_white_space_on_save 怎么配才真正生效
这个设置必须写在用户设置(Preferences → Settings 右侧面板)里,且格式严格:
- 整块内容是合法 JSON:
{ "trim_trailing_white_space_on_save": true },不能只写那一行 - 引号必须是英文双引号,
trim_trailing_white_space_on_save拼写不能错(常见错写成triming或trailing_space_on_save) - 值必须是
true,不是"true"(字符串会静默失效) - 如果已有其他配置项,这一行末尾要加英文逗号,但最后一项后不能多逗号
保存该文件后立刻生效,无需重启 Sublime。
为什么按 Ctrl+S 还是不删空格?优先级覆盖最常见
Sublime 配置有明确优先级:项目设置(.sublime-project) > 语法专属设置(如 Settings – Syntax Specific) > 用户设置。你配了全局,但可能某处写了 "trim_trailing_white_space_on_save": false:
- 右下角看当前文件语法标识(如
source.python、text.html),临时切到Plain Text测试是否恢复 - 检查
.sublime-project文件里是否显式设为false - 某些插件(如
LaTeXTools、MarkdownPreview)会在其语法定义中硬编码禁用该行为,得去对应插件的Package Settings → Settings里查 - 已安装
TrailingSpaces插件且启用了trailing_spaces_on_save,两者同时开会导致光标跳动、重复清理,建议只留一个
想手动一键清理当前文件?别用正则瞎替换
快捷键 Ctrl+Shift+P(Windows/Linux)或 Cmd+Shift+P(macOS),输入 Trim Trailing White Space 回车即可——这是 Sublime 内置命令,只删行尾空格和 \t,不动缩进、不碰空行、不伤 Markdown 换行语法(两个空格 + 换行):
- 它不依赖任何插件,也不受语法类型限制(哪怕当前是
text.markdown,也能执行) - 若需绑定快捷键,打开
Preferences → Key Bindings,在右侧加:[{"keys": ["ctrl+alt+t"], "command": "trim_trailing_white_space"}] - 正则仅作备用:打开
Ctrl+H,查找框填[ \t]+$,勾选.* (Regular Expression),替换框留空 →Replace All - 别用
^\s+$:它会匹配空行本身;也别勾选. matches newline,否则$失效
删空行要用 ^\s*$,不是 ^$
行尾空格和空行是两回事,删空行得换一套正则:
- 按
Ctrl+H打开替换面板,点亮右下角.*图标启用正则 - 查找框填
^\s*$(注意:不是^$,后者漏掉末尾带空格的“伪空行”) - 替换框必须完全留空,且确保
. matches newline是关闭状态 -
^\s*$中的\s不含全角空格(\u3000)、零宽空格(\u200b)等,这类需手动扩展表达式
真正容易被忽略的是:Sublime 的 trim_trailing_white_space_on_save 从不处理空行本身,只管“非空行”的行尾;而 ^\s*$ 是唯一能稳定识别并清除所有视觉空行的正则写法——哪怕那行末尾藏着不可见字符,它也能抓住。

















