最稳正则是[ \t]+$,非\s+$;必须关闭“. matches newline”,否则易致行粘连;长期建议配置"trim_trailing_white_space_on_save": true实现保存自动清理。

不能一键清除“所有废弃空白字符”——Sublime 没有语义分析能力,所谓“废弃”必须由你明确定义:是行尾空格?伪空行?全角空格?还是 BOM?选错正则或配置,删的就是有效缩进或硬换行。
怎么安全删掉所有行尾空格和制表符
最稳的正则是[ \t]+$,不是\s+$:前者只匹配空格和\t,后者在 Sublime 里可能吞掉\n,导致两行粘连。操作前必须关掉右下角的. matches newline(点亮即失效)。
- 打开替换面板(
Ctrl+H),启用正则(点.*) -
Find What填:[ \t]+$;Replace With留空 - 点
Replace All——它不会动缩进用的空格,只清“行末多敲的” - 长期建议配
"trim_trailing_white_space_on_save": true,保存即生效
怎么批量清理“看着空、其实藏了不可见字符”的行
^\s*$能覆盖空格、\t、\r、\n,但对中文环境常见的\u3000(全角空格)、\u200b(零宽空格)、\ufeff(BOM)无效。这些字符会让^\s*$完全失灵。
- 先开
View → Show White Space,看行首是否出现·或→;若看到U+200B等标记,就得升级正则 - 查
^[\s\u200b\uFEFF\u00a0\u3000]*$,仍要关. matches newline,替换框留空 - 文件末尾剩一个空行?不是正则问题,是
^\s*$不匹配 EOF 前无换行符的“最后一行”。用Ctrl+Shift+K手动删整行更干净
为什么“Replace All in Files”对空行无效
在Find in Files里对^\s*$执行Replace All in Files,Sublime 实际只是把匹配行替换成空字符串,**不删除换行符本身**。结果仍是“视觉空行”,文件体积不变,下次搜索还会命中。
- 它不是删除行为,而是“内容置空”,换行符照常保留
- 想真正减小体积,必须逐个文件打开,用
Ctrl+H+^\s*$+ Replace All - 或者改用命令行:比如
find . -name "*.py" -exec sed -i 's/^[[:space:]]*$//' {} \;(Linux/macOS)
真正难的不是写正则,而是判断哪类空白该删:Makefile 里行尾空格参与变量展开,YAML 缩进空格不能碰,HTML 中的 对应\u00a0也不能一并扫掉。每次清理前,先确认当前文件类型和上下文规则。

















