Sublime保存时自动删行尾空格只需在用户设置中添加"trim_trailing_white_space_on_save": true,保存后按Ctrl+S/Cmd+S即可触发;还可启用trim_automatic_white_space实现实时清理。

怎么让 Sublime 保存时自动删行尾空格
直接改用户设置就行,不用装插件。核心就一个配置项:trim_trailing_white_space_on_save,设为 true 后,每次按 Ctrl+S(Windows/Linux)或 Cmd+S(macOS)就会自动清理每行末尾的空格和制表符(\t),但不会碰行首缩进、中间空格,也不影响空行本身。
- 打开 Preferences → Settings,右侧是用户设置(User),只改这里
- 确保 JSON 格式合法:用英文双引号、键名别拼错(常见错误:
triming、trailing_space、大小写混用) - 加这一行即可(注意逗号位置,别在最后一项后多加):
{ "trim_trailing_white_space_on_save": true } - 改完必须保存该配置文件,Sublime 不会热重载错误的 JSON
编辑过程中能实时清理吗
可以,靠另一个开关:trim_automatic_white_space。它会在你换行、光标移出某行时,立刻清理该行末尾“多余”的空白——比如敲完回车又手抖按了两下空格,松开键盘那一瞬就没了。
- 这个行为和
trim_trailing_white_space_on_save独立,建议两个都开 - 它不删缩进用的空格/TAB,只处理“没语义”的残留(如
print("hello") <空格><空格>后面那俩) - 如果某类文件(比如 shell 脚本)需要保留行尾空格对齐注释,不能关全局,得用语法专属设置:Preferences → Settings – Syntax Specific,再加
"trim_trailing_white_space_on_save": false
为什么我开了设置却没反应
最常见原因不是功能失效,而是触发条件没满足。Sublime 的 trim 行为严格绑定“显式保存”动作,跟窗口焦点无关。
-
save_on_focus_lost是另一个独立开关,设为true才会在切出窗口时自动保存;但即使开了它,trim_trailing_white_space_on_save仍需同时启用才能清理 - 文件没被标记为“已修改”(tab 标题无
*)时,按Ctrl+S是空操作,不会触发 trim - 文件权限为只读(如系统路径下的脚本)、或被 Git 插件锁住时,Sublime 会弹提示,也不会执行清理
- 右下角语法标识错误(比如 .log 文件被识别成 Plain Text 而非 Log),可能导致语法专属设置未加载,间接干扰全局设置生效
临时清理或批量处理怎么办
当设置没起作用、或要扫旧项目里的脏数据时,正则替换最稳,不依赖任何配置。
- 按
Ctrl+H(Windows/Linux)或Cmd+H(macOS)打开替换面板 - 查找框填:
\s+$(\s匹配空格/TAB,+表示至少一个,$锁定行尾) - 替换框留空,务必点击右下角
.*按钮启用正则模式 - 点
Replace All—— 注意:.默认不匹配换行符,所以不会误删整行,安全 - 想顺手删所有空行?用
^\s*$替换为空,但会连带删掉“只有空格”的伪空行,慎用










