最可靠方式是用正则替换:查找^(\r?\n){3,},替换为\n\n,可将连续多个空行缩为一个空行,兼顾跨平台换行符且不误删带空白符的假空行。

Sublime Text 删除多余空行,最可靠的方式是用正则替换,而不是手动或靠插件——因为正则能精准控制“连续多个空行”缩成一个,同时保留段落间必要的换行,且不误删带空白符的“假空行”。
匹配真正空行(不含空白字符)
很多用户直接搜 ^\s*$,结果把所有含空格、制表符的行也删了,导致代码缩进错乱。真正要删的是「纯空行」:开头到结尾之间没有任何可见字符,也不含空格或 tab。
- 正确正则:
^\r?\n(Windows/Linux/macOS 通用)或更稳妥的^\s*\r?\n(先允许空白再断言换行) - 但注意:
\s*会匹配空格和 tab,如果你确定文档里空行真的“什么都没有”,优先用^\r?\n - 在 Sublime 中打开「Find → Replace」,勾选
Regular Expression(Alt+R),查找框填^\r?\n,替换框留空 → 这会删掉所有空行,包括单个的
只删连续多个空行,保留单个空行分隔段落
这是最常用也最容易出错的场景:你想让文本保持“段落间一个空行”的节奏,而不是全删或全留。
- 查找:
(\r?\n){3,}—— 匹配 3 个及以上连续换行(即两个以上空行) - 替换:
\n\n—— 强制缩成两个换行(即一个空行) - 如果想更保守(比如只压缩「3 行及以上空行」),把
{3,}改成{2,},但注意这会把原本就只有一个空行的地方也动到(因\n\n本身含两个换行) - 实际建议用:
(\r?\n)\1{2,}(匹配重复换行符 3 次以上),再替换成\1\1,这样兼容不同换行符风格
小心 \s 和 \n 在 Sublime 正则里的行为差异
Sublime 的 PCRE 引擎对 \s 默认包含 \n,这会导致 ^\s*$ 实际匹配整行(含换行符),结果替换后出现意外空行或内容错位。
- 避免用
^\s*$直接替换为空 —— 它可能跨行匹配,尤其在启用了. matches newline时 -
\n在查找中代表换行符,但在替换中不能直接写\n,得用\n(Sublime 支持);但 Windows 下若文件是\r\n,只写\n可能漏掉\r - 统一方案:查找用
\r?\n,替换也用\n(Sublime 内部会自动适配当前文件换行格式)
真正麻烦的不是写不出正则,而是没意识到 Sublime 对混合换行符(比如粘贴进来带 \r\n,编辑后变成 \n)的处理不透明;建议操作前先用 File → Line Endings 确认当前格式,必要时先统一为 LF 或 CRLF 再批量处理。










