sublime text 中启用“保存时自动删行尾空格”需在 preferences → settings – user 中添加 "trim_trailing_white_space_on_save": true,该设置仅删除非空行末尾空格和制表符,不处理空行。

怎么配“保存时自动删行尾空格”,不是空行
Sublime Text 没有原生的「保存时自动删空行」功能,但能稳定自动删行尾空格——靠的是 trim_trailing_white_space_on_save。它只清理每行末尾的空格和制表符,不碰空行、不改缩进、不删行首空格。
操作很简单:
打开 Preferences → Settings – User,在右侧 JSON 里加这一行:
"trim_trailing_white_space_on_save": true
注意三点:
- 必须用英文双引号,不能是中文全角引号
- 如果前面已有配置项,这行末尾要加逗号
- 保存后立即生效,不用重启 Sublime
测试方法:新建 .txt 文件,输 hello (末尾几个空格),按 Ctrl+S 或 Cmd+S,空格立刻消失。
为什么不能用 trim_trailing_white_space_on_save 删空行
这个配置项设计上就不管空行——它只作用于「非空行」的末尾空白。哪怕你设成 true,文件里一堆 \n\n\n 还是原样不动。
常见误解来源:
- 有人把“行尾空格”和“空行”混淆,以为开了它就能一并清理
- 右下角语法类型是
Plain text或Markdown时,该配置默认不生效(Sublime 会跳过这些类型) - 项目级设置(
.sublime-project)里显式写了"trim_trailing_white_space_on_save": false,会覆盖用户设置
想让它对所有文件类型生效?Sublime 4.4+ 支持白名单写法:
"trim_trailing_white_space_on_save": {"enabled": true, "file_extensions": ["*"]}
真正一键删空行:正则 + 快捷键组合
Sublime 没有单个热键直接删空行,但可以组合出接近“一键”的流程:用 ^\s*$ 匹配所有视觉空行(含空格、Tab、不可见空白),再用 Ctrl+Shift+K(Windows/Linux)或 Cmd+Shift+K(macOS)批量删整行。
关键步骤:
- 按
Ctrl+H(或Cmd+H)打开替换面板 - 勾选右下角
.*(启用正则),确保\n图标未高亮(即禁用. matches newline) - 在
Find What输入:^\s*$ -
Replace With框必须完全为空(连空格都不能有) - 点
Find All,然后按Ctrl+Shift+K—— 所有匹配行被干净删除,换行符自动补全
别用 Delete 或 Backspace:它们只删字符,容易留下“看着空、实则含零宽空格 \u200b”的伪空行。
插件方案:DeleteBlankLines 的实际表现
装插件 DeleteBlankLines 后,确实能用 Ctrl+Alt+Backspace 一键删所有空行,但它有两个硬伤:
- 无法识别全角空格
\u3000、零宽空格\u200b、BOM\uFEFF等隐形字符,遇到这类“脏空行”直接漏删 - 在多行选中状态下行为不稳定,有时只删部分、有时报错
- 和 TrailingSpaces 插件共存时,可能触发冲突导致
Ctrl+Shift+P命令失效
如果你处理的是网页粘贴、Excel 导出或微信转发来的文本,建议优先用正则 ^\s*$ 配合手动检查,而不是依赖插件自动扫。
最后提醒一句:所谓“一键”,在 Sublime 里从来不是按下某个键就万事大吉——它取决于你当前文件的编码、换行符类型、是否启用了语法专属设置,以及那行看似空的行里到底藏了几个 \u200b。











