sublime text 开启「保存时自动删行尾空格」只需在用户设置中添加 "trim_trailing_white_space_on_save": true,保存即生效;还可配合 "trim_automatic_white_space": true 实现光标移出行时即时清理,二者均不删除缩进空格。

怎么开「保存时自动删行尾空格」这个功能
Sublime Text 原生就支持,根本不用装插件,只改一个配置项就行:trim_trailing_white_space_on_save。设为 true,下次按 Ctrl+S(Windows/Linux)或 Cmd+S(macOS)就会自动清理每行末尾的空格和制表符。
- 打开
Preferences → Settings – User,在右侧 JSON 里加这一行:"trim_trailing_white_space_on_save": true
- 保存设置文件后立即生效,无需重启
- 它只对「显式保存」起作用——如果开了
save_on_focus_lost(失焦自动保存),那它就不触发,这是 Sublime 的设计限制
想边写边清理?再加一个开关trim_automatic_white_space 是另一个原生配置,作用是:光标离开某一行时,自动删掉该行末尾多余空格。和 trim_trailing_white_space_on_save 配合,能覆盖更多“手抖多打空格”的场景。
- 同样加在用户设置里:
"trim_automatic_white_space": true
- 它不影响缩进(比如函数体内
return x 前的空格不会动)
- 如果你在空行里习惯先打几个空格再输入内容,这个选项可能让你有点不适应,可临时关掉
为什么设置了却没反应?常见失效原因
不是配置写错了,多数时候是被其他东西盖过去了。
- 项目级配置(
.sublime-project)优先级高于用户设置,如果里面写了 "trim_trailing_white_space_on_save": false,那用户设置就无效
- 某些插件(比如
TrailingSpaces)会接管空格逻辑,建议先禁用它测试
- 文件语法类型被忽略?看右下角状态栏显示的语法名,临时切到
Plain Text 测试一下
- JSON 格式出错:多逗号、少引号、用单引号代替双引号,都会让整个设置失效
Markdown / Makefile 等特殊文件怎么保空格
原生配置是全局开关,不区分文件类型。但像 text.markdown 依赖行尾两个空格实现换行,source.makefile 的命令行末尾空格可能参与变量展开——这些地方误删会直接破坏格式。
- Sublime 原生不支持 per-syntax 控制,必须靠排除列表:
"trim_trailing_white_space_on_save_exclude": ["text.markdown", "source.makefile", "text.tex"]
- 这个字段只在 ST4 build 4140+ 支持,旧版无效
- 排除项用的是 Sublime 的 scope 名,不是文件后缀,查法:打开对应文件 →
Ctrl+Shift+P → 输入 View Package File → 看当前语法定义里的 scope 字段
Preferences → Settings – User,在右侧 JSON 里加这一行:"trim_trailing_white_space_on_save": true
save_on_focus_lost(失焦自动保存),那它就不触发,这是 Sublime 的设计限制trim_automatic_white_space 是另一个原生配置,作用是:光标离开某一行时,自动删掉该行末尾多余空格。和 trim_trailing_white_space_on_save 配合,能覆盖更多“手抖多打空格”的场景。
- 同样加在用户设置里:
"trim_automatic_white_space": true - 它不影响缩进(比如函数体内
return x前的空格不会动) - 如果你在空行里习惯先打几个空格再输入内容,这个选项可能让你有点不适应,可临时关掉
为什么设置了却没反应?常见失效原因
不是配置写错了,多数时候是被其他东西盖过去了。
- 项目级配置(
.sublime-project)优先级高于用户设置,如果里面写了 "trim_trailing_white_space_on_save": false,那用户设置就无效
- 某些插件(比如
TrailingSpaces)会接管空格逻辑,建议先禁用它测试
- 文件语法类型被忽略?看右下角状态栏显示的语法名,临时切到
Plain Text 测试一下
- JSON 格式出错:多逗号、少引号、用单引号代替双引号,都会让整个设置失效
Markdown / Makefile 等特殊文件怎么保空格
原生配置是全局开关,不区分文件类型。但像 text.markdown 依赖行尾两个空格实现换行,source.makefile 的命令行末尾空格可能参与变量展开——这些地方误删会直接破坏格式。
- Sublime 原生不支持 per-syntax 控制,必须靠排除列表:
"trim_trailing_white_space_on_save_exclude": ["text.markdown", "source.makefile", "text.tex"]
- 这个字段只在 ST4 build 4140+ 支持,旧版无效
- 排除项用的是 Sublime 的 scope 名,不是文件后缀,查法:打开对应文件 →
Ctrl+Shift+P → 输入 View Package File → 看当前语法定义里的 scope 字段
.sublime-project)优先级高于用户设置,如果里面写了 "trim_trailing_white_space_on_save": false,那用户设置就无效TrailingSpaces)会接管空格逻辑,建议先禁用它测试Plain Text 测试一下text.markdown 依赖行尾两个空格实现换行,source.makefile 的命令行末尾空格可能参与变量展开——这些地方误删会直接破坏格式。
- Sublime 原生不支持 per-syntax 控制,必须靠排除列表:
"trim_trailing_white_space_on_save_exclude": ["text.markdown", "source.makefile", "text.tex"] - 这个字段只在 ST4 build 4140+ 支持,旧版无效
- 排除项用的是 Sublime 的 scope 名,不是文件后缀,查法:打开对应文件 →
Ctrl+Shift+P→ 输入View Package File→ 看当前语法定义里的scope字段
容易被忽略的是:即使开了 trim_trailing_white_space_on_save,它也不会处理文件中间的空行,只清行尾空白 + 文件末尾连续空行;要删所有空行,得另想办法。











