Sublime不支持一键清理所有空格,仅原生命令Trim Trailing White Space可安全删除行尾空格;需用正则[ ]+$手动处理特殊场景,删空行须用^\s*$ ,而YAML/Makefile/Markdown等依赖空格的语法不可无差别清理。

Sublime 本身没有“一键清理所有空格”的通用操作——它严格区分“行尾空格”“空行”“缩进空格”和“行中空格”,而只有“行尾空格”能安全自动删;其他类型要么需正则,要么根本不该删。
用 Trim Trailing White Space 命令清理行尾空格
这是 Sublime 原生命令,不依赖插件、不误删缩进、不破坏 Markdown 硬换行(两个空格 + 换行):
- 按
Ctrl+Shift+P(Win/Linux)或Cmd+Shift+P(macOS),输入Trim Trailing White Space回车即可执行 - 它只删每行末尾的连续空格和
,对缩进、空行、行中空格、行首空格完全无视 - 执行后文件不会自动保存,可先对比差异再决定是否
Ctrl+S,比“一键即存”更可控 - 如果没反应,先看右下角语法标识(如
text.markdown或source.makefile),临时切到Plain Text测试——很多语法类型默认禁用该命令
配置 trim_trailing_white_space_on_save 实现保存时自动清理
适合长期协作项目,避免 Git diff 被空格污染:
- 打开
Preferences → Settings – User(必须是右侧「User」面板),在 JSON 中添加:"trim_trailing_white_space_on_save": true - 注意:值必须是
true(布尔值),不能写成"true"(字符串);整段需合法 JSON,引号为英文双引号,已有配置项末尾加逗号 - 该设置仅对非空行生效,不影响空行、缩进、行中空格,也不处理全角空格(
u3000)、零宽空格(u200b)等 Unicode 空白 - 若配置后仍无效,大概率被覆盖:检查
.sublime-project文件里是否有"trim_trailing_white_space_on_save": false,或是否装了TrailingSpaces插件且同时启用了trailing_spaces_on_save
用正则 [ ]+$ 替换手动救急
当原生命令被语法限制、或需批量处理老文件时,这是最准的行尾空格清理方式:
- 按
Ctrl+H(Win/Linux)或Cmd+H(macOS)打开替换面板 - 点右下角
.*启用正则,确保. matches newline未勾选(否则$失效,可能跨行误删) - Find What 填:
[ ]+$(只匹配空格和,不碰,安全) - Replace With 留空,点
Replace All - 别用
s+$:Sublime 中s默认包含换行符,容易导致上下行“粘连”;也别用^s*$——那是删空行的,不是删行尾空格
删空行必须用 ^s*$
,别信快捷键
所谓“一键删空行”的快捷键(如 Ctrl+Alt+Backspace)基本不可靠:
-
DeleteBlankLines插件只删纯空行(仅含或),对带空格、Tab、全角空格的“伪空行”完全无效 - 真正能覆盖常见场景的是正则:
^s*$(^行首,s*匹配任意空白,$行尾,明确匹配换行符) - 文件末尾连续空行会被保留最后一行——这是 Sublime 行为,不是正则问题;如需彻底清理,额外跑一次
s*$ - 从网页、微信、Excel 粘贴的内容常含
u200bu3000u00a0,s不识别它们,得显式写进正则:^[ u200bu3000u00a0]*$
真正麻烦的从来不是怎么删,而是删完发现某段 YAML 对齐错位、Makefile 变量展开异常、或 Markdown 硬换行失效——这些语义依赖空格的场景,不能无差别清理。

















