用正则表达式^\s*$\n可一次性删除所有空行,包括含空白符的“视觉空行”和纯换行符的空行,且兼容Windows/Linux/macOS换行符,安全高效。

用正则表达式一次性删掉所有空行
Sublime Text 本身没有“一键删除空行”的独立菜单项,但通过 Find → Replace 配合正则表达式,两步就能彻底清理——这是最可靠、跨平台通用的方法。
注意:空行包括纯空白符(空格、制表符)构成的“视觉空行”,也包括只有换行符的真正空行。默认搜索会忽略它们,必须开启正则和全文件匹配。
- 按下
Ctrl+H(Windows/Linux)或Cmd+H(macOS)打开替换面板 - 点击右下角
.*按钮启用正则模式(确保它高亮) - 在
Find What输入:^\s*$\n
- 在
Replace With留空(不填任何字符) - 点击
Replace All
这个正则 ^\s*$\n 的含义是:“行首开始 + 任意空白符(含空格、\t、\r)零次或多次 + 行尾结束 + 换行符”。它能精准捕获所有“看起来是空的”行,包括末尾带空格的脏空行。
为什么不用 ^$\n 或 \n\n?
单独用 ^$\n 只能匹配“完全无字符+换行”的行,漏掉那些末尾有空格或制表符的空行;而盲目替换 \n\n 会把连续多空行压缩成单个空行,无法彻底清空——尤其在代码格式化后残留的“半空行”场景下,效果不可控。
更关键的是:如果文件以空行结尾,^\s*$\n 仍能匹配最后一行(因为 \n 存在),但 ^$\n 在 Sublime 中可能因 EOF 处理差异而失效。
-
^\s*$\n覆盖所有空行类型,且不会误删非空行末尾的空白 - 避免用
\n{2,}类替换,它只处理“多个连续空行”,不是“每个空行” - 如果想保留段落间一个空行,可先执行本操作,再手动加回,不要试图用正则保空行——逻辑复杂易出错
用快捷键绑定实现真·一键操作
重复输入正则太慢?可以把它固化为快捷键。Sublime 支持通过 Key Bindings 调用自带命令 replace_all,但需配合预先设置好的查找参数——实际更推荐用插件或自定义命令。
最轻量的做法:安装官方维护的插件 TrailingSpaces(Package Control 可搜到),它默认高亮并可一键移除行尾空格;再配合上面的正则,形成“先清尾空格 → 再删空行”流水线。
- 不装插件的话,可将上述正则保存为
Find面板历史(Sublime 自动记住最近几次正则) - 若常做此操作,建议把
^\s*$\n加入Find What输入框后按Enter,下次只需Ctrl+Shift+H(Replace All in Files)快速触发 - 注意:批量操作前务必确认已保存文件,或先用
Ctrl+Z测试一次
Python/JS 文件里删空行要小心什么?
在代码文件中删空行看似安全,但某些语法结构依赖空行分隔——比如 Python 的 docstring 后紧跟空行再接函数体,或 JS 的 IIFE 包裹块之间靠空行隔离。虽然删空行一般不影响执行,但可能破坏可读性或 Git diff 逻辑。
- Python 中:函数/类定义之间空行是 PEP 8 建议,删掉不会报错,但团队协作时容易引发格式争议
- JS/TS 中:模块导出之间空行常用于语义分组,删除后压缩工具(如 Terser)仍能正常工作,但人工 review 成本上升
- 真正危险的是模板字符串或注释块内的空行——比如
`line1\n\nline3`,这种属于字符串内容,正则^\s*$\n不会匹配(因不在行首),所以放心
真正容易被忽略的是:正则里的 ^ 和 $ 默认不匹配 \r\n(Windows 换行),但 Sublime 的正则引擎自动兼容所有换行符,无需额外写 \r?\n ——这点比很多编辑器省心。










