sublime text 原生支持自动清理行尾空白,启用 trim_trailing_white_space_on_save: true 即可保存时自动删除行尾空格和制表符;若不生效,需检查配置层级、文件语法类型及是否被项目设置覆盖,并可通过键位绑定 trim_trailing_white_space 命令实现快捷清理。

Sublime Text 自带功能就能清理行尾空白
不用装插件,trim_trailing_white_space_on_save 开启后每次保存自动删掉行尾空格和制表符。这是 Sublime 原生支持的行为,不是 hack,也不依赖第三方。
常见错误现象:Save 之后没反应,或者手动触发没效果——大概率是配置没生效或被覆盖。
- 打开
Preferences → Settings,在右侧用户设置里加这一行:"trim_trailing_white_space_on_save": true
- 确保左侧默认设置里这行没被设为
false(有些旧版本默认关着) - 如果用了项目专属设置(
.sublime-project),检查里面是否显式设成了false,它会优先于用户设置 - 该选项只对「保存时」生效,不响应快捷键;想手动触发就用
Ctrl+Shift+P(Win/Linux)或Cmd+Shift+P(macOS),输入Trim Trailing White Space回车
为什么有时 trim_trailing_white_space_on_save 不工作?
不是 Bug,通常是配置层级冲突或文件类型被排除。Sublime 默认会跳过某些「非代码」文件类型,比如 Plain text、Markdown 或自定义语法高亮的文件,除非你明确允许。
- 检查当前文件右下角显示的语法类型,比如是
Plain text而不是Python—— 它可能不在默认清理范围内 - 在用户设置里补上
trim_trailing_white_space_on_save的白名单控制:"trim_trailing_white_space_on_save": true, "trim_automatic_white_space": false, "ensure_newline_at_eof_on_save": true
(后两项非必须,但常一起配) - 若需对所有文件类型生效,加这行:
"trim_trailing_white_space_on_save": {"enabled": true, "file_extensions": ["*"]}(注意:Sublime 4.4+ 支持这种写法;老版本不认,只能靠插件兜底)
想用快捷键一键清理,又不想装插件?
可以绑定一个命令到快捷键,绕过「保存即清理」的限制,适合临时修一堆脏文件。
- 打开
Preferences → Key Bindings - 在右侧用户键位设置里加一条:
[{"keys": ["ctrl+alt+t"], "command": "trim_trailing_white_space"}](Win/Linux 示例;macOS 可改用super+alt+t) -
trim_trailing_white_space是内置命令名,不是插件函数,不依赖任何 package - 注意别和已有快捷键冲突,比如
Ctrl+Shift+P已绑了命令面板,Ctrl+Alt+T在很多 Linux 桌面环境是开终端,建议先试Ctrl+Alt+Shift+T
清理逻辑细节:哪些字符真会被删?
只动行末,不碰行首或中间的空白;制表符 \t 和空格 都算,但换行符 \n、回车符 \r 不在此列 —— 所以不会破坏 DOS/Unix 行尾差异。
- 一行只有空格和制表符?整行内容清空,只剩一个换行(这是预期行为)
- 正则替换也能干这事,但
trim_trailing_white_space更轻量、无误匹配风险,比如不会误删字符串里的末尾空格(它只作用于物理行尾) - 性能上几乎无感,哪怕开几百个标签页同时操作,因为它是原生 C++ 实现,不是 Python 插件遍历
- 兼容性:Sublime Text 3 build 3000+ 和全部 Sublime Text 4 版本都支持,无需升级
真正容易被忽略的是文件类型匹配逻辑——很多人以为开了 trim_trailing_white_space_on_save 就一劳永逸,结果 Markdown 笔记或 JSON 配置里堆满空格却纹丝不动。得看右下角语法标识,再决定要不要加 file_extensions 白名单。










