Sublime Text 保存时自动删除行末空格靠的是 trim_trailing_white_space_on_save 设置项,需在 Preferences → Settings – User 中设为 true,该设置全局生效但不按文件类型区分,且仅对执行保存操作的文件生效。

Sublime Text 保存时自动删除行末空格,靠的是 trim_trailing_white_space_on_save 这个设置项,不是插件也不是快捷键——开箱即用,但默认关闭。
怎么开启「保存时自动删行尾空格」
直接修改用户配置即可生效,无需重启:
- 菜单栏打开 Preferences → Settings – User
- 在右侧 JSON 配置中添加或修改字段:
"trim_trailing_white_space_on_save": true - 保存文件(
Ctrl+S/Cmd+S),下次保存就自动清理了
注意:该设置只影响「当前视图所用语法类型」的文件。比如你在 Python 文件里保存触发了清理,但同一设置对 Markdown 文件也生效——它不按文件类型区分,是全局开关。
为什么改了没反应?常见失效原因
最常踩的坑不是设置错了,而是被其他配置覆盖或干扰:
-
files.trim_trailing_white_space_on_save是旧版写法(Sublime Text 2),ST3/ST4 必须用trim_trailing_white_space_on_save(无files.前缀) - 如果同时启用了
draw_white_space且设为"all",你会看到空格变成小点,但这和删除无关;真正起作用的只有trim_trailing_white_space_on_save - 某些插件(如
TrailingSpaces)会接管空格逻辑,优先级可能高于原生设置。若已安装,建议禁用它,或确认其配置未设为"enabled": false
想保留某些文件类型的空格?得靠插件
Sublime 原生不支持按文件类型开关该行为。如果你希望:.md 保留行尾空格(用于换行),而 .py 严格清理,就必须借助插件:
- 安装
ApplySyntax或EditorConfig类插件 - 或使用
TrailingSpaces插件 + 自定义trailing_spaces_file_regex排除特定后缀 - 例如在
TrailingSpaces.sublime-settings中加:{ "trailing_spaces_file_regex": "^(?!(.*\\.md|.*\\.txt)$).*$" }表示跳过.md和.txt
纯原生方案做不到这种粒度控制。
顺手清理已有文件的行尾空格
开启自动清理后,旧文件不会被“回溯处理”。要一次性扫一遍当前文件:
-
Ctrl+Shift+P(Windows/Linux)或Cmd+Shift+P(macOS)调出命令面板 - 输入
Trim Trailing White Space并回车 - 也可以用正则替换:
Search → Replace → Find What:[ \t]+$,Replace With:留空,勾选Regular Expression
注意:正则中的 \t 要手动输入反斜杠+t,不能粘贴制表符;$ 必须存在,否则会误删中间空格。
真正容易被忽略的是:这个设置不作用于「未保存的缓冲区」——比如你新建一个空标签页、敲几行带空格的代码、直接关掉,它不会提示也不会清理。只有执行了 save 操作才会触发。所以别指望它帮你兜底未保存内容。










