^\s*$\n? 是最稳妥的空行匹配模式,可精准删除纯空行及含空白符的伪空行,避免误删末尾换行或合并行;需启用正则模式,慎用于大文件或跨文件操作。

Sublime 中用正则一键删空行的正确写法
直接上结论:^\s*$\n? 是最稳妥的空行匹配模式,配合「Replace All」能干净删除所有纯空行(含仅含空格、制表符的“伪空行”),且不会误删末尾换行或破坏文件结构。
很多人试 ^\n 或 ^$\n,结果删不全、多删一行、或把最后一行吃掉——问题出在没处理空白符和换行符边界。
-
^\s*$匹配行首到行尾之间只有空白符(空格、\t、\r)的行 -
\n?表示“可选的换行符”,避免替换后两行合并成一行(即防止把\n\n变成\n) - 务必勾选「Regular Expression」和「Dot matches newline」(后者一般不用,但若空行跨段落可能需启用)
为什么 ^$ 会漏掉带空格的空行
^$ 只匹配真正“什么都没有”的行,只要某行有 1 个空格或 1 个制表符,它就完全失效。这类行肉眼看着是空的,但 Sublime 正则里不是。
实际场景中,从 Excel 复制、网页抓取、或某些编辑器导出的文本,常在空行里混入不可见空白符,导致 ^$ 完全无效。
- 用
Ctrl+Shift+P→ 「Show Console」,再输入view.find(r'^\s*$', 0)可验证当前文件里哪些行被识别为空行 - 想预览效果?先用
Find All(Alt+Enter),看高亮是否覆盖所有目标行 - 删之前建议
Ctrl+Z预留撤回,尤其处理配置文件或代码时
保留段落间单空行:用 \n{2,} 替换为 \n\n
如果目标不是“删所有空行”,而是“压缩多余空行,只留一个”,就不能用上面的模式——否则段落会被挤在一起。
此时应匹配“两个及以上连续换行”,替换成两个换行符(即保留一个空行):
- 查找:
\n{2,} - 替换:
\n\n - 注意:必须关闭「Match case」和「Whole word」,否则可能不生效
- 这个逻辑对 Windows(
\r\n)和 macOS/Linux(\n)都适用,因为 Sublime 的正则引擎自动适配换行符
批量处理多个文件时的注意事项
Sublime 原生不支持跨文件正则替换,但可通过「Find in Files」间接实现——不过要小心路径和编码。
- 打开「Find in Files」(
Ctrl+Shift+F),输入^\s*$\n?,设置目录和文件类型(如*.txt, *.md) - 点击「Replace」后,它只对当前 Find 结果里的匹配项操作,**不会自动保存文件**,每改完一个得手动
Ctrl+S - 如果文件含中文或特殊符号,确保右下角编码显示为
UTF-8,否则正则可能错位匹配 - 大文件(>10MB)慎用,Sublime 可能卡死;优先考虑命令行工具如
sed '/^[[:space:]]*$/d' file.txt
\s* + 行边界,这点漏了,后面全白搭。










