sublime text 默认不启用保存时删除行末空格,需手动在用户设置中添加"trim_trailing_white_space_on_save": true;该功能仅对已保存、可写的文件及识别出具体语法的文件生效,且可能与trailingspaces插件或.editorconfig冲突。

Sublime Text 保存时自动删除行末空格怎么配
默认不开启,得手动改设置。核心是启用 trim_trailing_white_space_on_save,但它不是开关式选项——它依赖于文件是否被 Sublime 认为“可写”且“已保存过”,新文件或未保存的临时缓冲区不会触发。
- 打开
Preferences → Settings(左右双栏),在右侧用户设置里加一行:"trim_trailing_white_space_on_save": true - 确保同时关闭
draw_white_space或设为"none",否则你可能误以为空格还在——其实是显示开了,但实际已删 - 该设置对
.gitignore、.editorconfig等配置文件也生效,如果这些文件本身靠空格对齐(极少见),保存后格式会变
为什么有时保存了空格还在
常见错觉:看着行尾有空格,保存后没消失。根本原因通常是文件编码或换行符异常,或者 Sublime 没把当前视图识别为“普通文本”。
- 检查右下角状态栏:如果显示
Plain Text,说明 Sublime 没识别语法类型,此时trim_trailing_white_space_on_save可能不触发;换成Python、JSON等具体语法后就正常了 - 文件以
BOM开头(如 UTF-8 with BOM)可能导致 Sublime 读取逻辑异常,空格清理失效;用File → Reopen with Encoding → UTF-8重载试试 - 如果用了插件如
TrailingSpaces,它和原生清理逻辑冲突,二者同时开会导致反复闪动或清理失败
想只对某些语言生效怎么办
Sublime 不支持按语言粒度开关行末空格清理,但可以通过语法专属设置间接实现。本质是把全局设置关掉,再为特定语法单独开。
- 先在用户设置里设
"trim_trailing_white_space_on_save": false - 然后打开一个
Python文件 →Preferences → Settings – Syntax Specific→ 加入:"trim_trailing_white_space_on_save": true - 注意:这个文件必须已有语法标识(比如后缀是
.py),纯文本新建文件不会加载该配置 - 不推荐对
Markdown或HTML开此选项——它们常依赖行尾空格实现换行,一删就破格式
和 .editorconfig 冲突吗
会。如果项目根目录有 .editorconfig,且里面写了 trim_trailing_whitespace = true,而 Sublime 又装了 EditorConfig 插件,那两个机制会叠加执行——通常无害,但可能掩盖真实问题。
- 优先信
.editorconfig:团队协作时它才是权威,Sublime 设置应保持为false,交由插件统一处理 - 验证是否生效:改一行末尾加空格,保存后立刻用命令行
git diff --whitespace看是否真删了,别光看编辑器界面 - 插件未正确加载时,状态栏会显示
EditorConfig: not loaded,此时 Sublime 设置才起作用,容易误判
真正麻烦的是混合环境:有人用 VS Code(默认清空格),有人用 Sublime(没配),Git 提交时 whitespace 差异就藏不住——别指望编辑器自动对齐,得靠 pre-commit 钩子兜底。










