sublime text 原生支持自动删除行尾空格,推荐启用 trim_trailing_white_space_on_save 和 trim_automatic_white_space 设置,避免与 trailingspaces 插件冲突;二者组合对 python、go 友好,但需注意 markdown 硬换行、makefile 变量展开等特殊场景,并可通过语法专属设置或 exclude 排除。

Sublime Text 本身不需要插件就能自动删行尾空格,装 TrailingSpaces 反而容易出问题——它默认只高亮不删除,配错会和原生功能冲突,导致光标乱跳、保存闪动。
直接用原生设置 trim_trailing_white_space_on_save
打开 Preferences → Settings – User,在右侧 JSON 里加这一行(确保格式合法):
{
"trim_trailing_white_space_on_save": true
}
注意:trim_trailing_white_space_on_save 只在你按 Ctrl+S(Windows/Linux)或 Cmd+S(macOS)时触发,删的是每行末尾的空格和 \t,不碰缩进、不删空行、不改行中空格。
- 必须写在用户设置(右侧)里,不是默认设置
- 整段 JSON 要用英文双引号,大括号包裹,已有其他配置项时这行末尾要加逗号
- 保存该文件后立即生效,不用重启
- 如果没反应,先新建一个
.txt文件测试:输hello(末尾空格),按Ctrl+S看是否消失
想边写边清理?加 trim_automatic_white_space
光标移出某行(比如按 →、Enter 或点击别处)就立刻清理该行尾部空格和 \t,比等保存更及时:
{
"trim_trailing_white_space_on_save": true,
"trim_automatic_white_space": true
}
这个组合对 Python、Go 等缩进敏感语言很友好,但要注意:
- 在
text.markdown中,两个空格 + 换行是硬换行语法,会被误删;可在语法专属设置里设"trim_trailing_white_space_on_save": false - 在
source.makefile中,行尾空格可能参与变量展开,建议用trim_trailing_white_space_on_save_exclude排除 - 如果你习惯在空行里先打空格再输入,
trim_automatic_white_space可能让你有点不适应
别同时开 TrailingSpaces 插件和原生选项
两者共存会导致重复执行、光标跳动、保存时界面闪一下——这不是 bug,是设计冲突。
-
TrailingSpaces默认只高亮,不自动删;要删得手动配"trailing_spaces_on_save": true,还得确保"trailing_spaces_enabled": true和"trailing_spaces_modified_lines_only": false - 即使配全了,它还受
.sublime-project或插件(如 LaTeXTools、MarkdownPreview)的语法专属设置压制 - 右下角显示的语法 scope(如
source.python)可能加载了更高优先级配置,把你的 User 设置盖掉 - 真要高亮确认,不如开
"draw_white_space": "all",点一下就看到所有空格和 Tab
临时清理老文件?用命令面板执行 Trim Trailing White Space
快捷键 Ctrl+Shift+P(Win/Linux)或 Cmd+Shift+P(macOS),输入 Trim Trailing White Space 回车。它比正则安全得多:
- 只删每行末尾的空格和
\t,不碰缩进、不删空行、不破坏 Markdown 硬换行 - 只作用于当前视图,不会跨文件批量操作
- 不依赖任何插件,Sublime 自带,稳定可靠
真正容易被忽略的是:空格是否该删,取决于上下文——YAML 对齐空格、Python 缩进、.env 文件格式里的空格,都不是“多余”的。自动清理只是辅助,关键还是看清语法 scope 再决定开不开、怎么开。











