用^\s*$可一键删除所有视觉空行,它匹配整行仅含空白字符或为空的行;需启用正则、禁用. matches newline、替换框留空;末尾空行未匹配时可用ctrl+shift+k手动删除。

用 ^\s*$ 删除所有“视觉空行”,不是只删 ^$
连续空白行批量删除,本质是先识别再清空——而 ^\s*$ 是 Sublime 唯一能稳定覆盖所有情况的正则:它匹配整行只有空白字符(空格、\t、\r、\n)或完全为空的行。用 ^$ 会漏掉带缩进空格的“伪空行”;用 \n\n 则跨平台失效(Windows 的 \r\n 不匹配),还可能误吞代码中的合法换行。
操作前必须确认三点:
- 右下角
.*图标已点亮(启用正则) -
. matches newline图标未高亮(禁用该选项,否则\s*会跨行吞内容) -
Replace With框彻底为空——填\n或空格会导致每删一行反而多塞一个换行符
删完还有残留?检查文件末尾是否缺换行符
^\s*$ 只匹配“有换行符边界”的行。如果文件以空行结尾但 EOF 前没有换行符(即最后一行是空的、且没 \n),这一行不会被匹配到——这不是 bug,是 Sublime 的行锚定机制决定的。
补救方法很简单:
- 把光标移到最后一行开头(哪怕看不见内容)
- 按
Ctrl+Shift+K(Windows/Linux)或Cmd+Shift+K(macOS) - 这个快捷键会干净删除整行并自动补上换行符,不会让上下两行“焊”在一起
别用 Delete 或 Backspace ——它们只删光标前字符,极易留下含零宽空格或全角空格的“假空行”。
想保留段落间距?分两步压,别一步清光
全删空行在 Python、Markdown、CSS 等场景里容易破坏语义(比如函数间空行、段落分隔)。更安全的做法是压缩而非清除:
- 先跑一次
^\s*$,清掉所有单个伪空行 - 再查
\n{2,},替换为\n\n(两个换行符),把 ≥2 个连续空行压成 1 个标准分隔 - 注意顺序:反着来会导致刚压好的
\n\n被第二步又拆开
这个组合对 CRLF 和 LF 文件都有效,\n 在 Sublime 内部自动适配不同换行格式。
大文件或批量处理时,千万别直接 Replace All
超过 5MB 的日志或生成代码,Replace All 容易卡死甚至崩溃丢数据。真实工作流应该是:
- 先点
Find All,看右下角显示匹配行数:超 5000 行就放弃全量操作 - 选中一段(比如一个配置块或函数体),勾选
In Selection再替换 - 用
Ctrl+Shift+F全局处理多文件时,务必关掉Case sensitive和Whole word——它们会让^/$失效
真正容易被忽略的是:UTF-8 with BOM 文件可能干扰匹配。遇到异常,可临时转成 UTF-8 without BOM,或改用显式正则:^[ \t\r\n]*$。











