Sublime Text真正一键删空行需用正则^\s*$\n?配合正则模式与跨行匹配,可处理纯空行、含空白符行及文件末尾空行;宏录制或Text Pastry插件可实现多文件批量清理,并需注意BOM、换行符等隐形干扰因素。

Sublime Text 里怎么真正“一键”删空行
不能靠 Ctrl+H 手动搜 ^$ 然后点全部替换——那不算“一键”,而且默认不匹配文件末尾的空行、也吃掉带空白符(空格、制表符)的“伪空行”。真正的快捷方案是用正则 + 命令组合,且必须开启“正则模式”和“跨行匹配”。
- 打开查找面板(
Ctrl+H或Cmd+H),勾选.*(正则模式) - 查找框输入:
^\s*$\n?—— 这能匹配纯空行、只含空白符的行,以及它们后面的换行符(避免多删一行) - 替换框留空,点击
Replace All - 如果想绑定成真正的一键操作:可录宏(
Ctrl+Q开始,执行上述步骤,再Ctrl+Q结束),然后保存为命令或绑定快捷键
为什么 ^\s*$ 比 ^$ 更靠谱
^$ 只匹配“完全没字符”的行,但实际文本里常有看不见的 \t、 或 BOM 后残留空格;^\s*$ 中的 \s 包含所有空白字符,更符合“视觉上为空”的需求。不过要注意:
-
\s在 Sublime 默认正则引擎(PCRE)中会匹配换行符,所以必须加$锚定行尾,否则可能误吞下一行开头 - Windows 换行是
\r\n,Linux/macOS 是\n,^\s*$\n?的\n?能兼容两者,但不会删掉最后一行没换行符时的空行——这是常见漏删点 - 如果文件结尾有连续空行,建议先执行一次
^\s*$(?=\r?\n)(正向先行断言),再补一次^\s*$清尾部
用命令行插件 Text Pastry 批量处理多文件空行
单文件用查找替换够用,但如果你要清洗整个项目里几十个 .txt 或 .log 文件,手动开每个文件太慢。装好 Text Pastry 后,可以:
- 选中多个标签页(
Ctrl+Click)或使用侧边栏多选文件 - 按
Ctrl+Shift+P→ 输入Text Pastry: Replace→ 回车 - 在弹出框中填入查找:
^\s*$\n?,替换留空,确认执行 - 注意:
Text Pastry的替换是“逐文件”而非“逐选区”,所以多文件时它比原生替换更稳,不会因光标位置失效
别忽略编码和换行符导致的“隐形空行”
有些空行删不掉,不是正则写错,而是文件用了 UTF-8 with BOM 或混合了 \r\n 和 \n。此时 ^\s*$ 可能被 BOM 干扰,或 \r 不被 \s 正确识别(取决于 Sublime 版本)。
- 先检查右下角状态栏显示的编码和换行格式(如
UTF-8/Windows) - 统一换行符:菜单
File → Line Endings → Unix (LF)或Windows (CRLF) - 若仍有异常,用十六进制查看插件(如
HexViewer)确认是否含EF BB BF(BOM),有则转为无 BOM 的 UTF-8 再操作










