notepad++ 7.9+ 推荐使用「编辑 → 行操作 → 移除空白行(包括空白字符)」,稳定兼容bom与unicode空白;菜单缺失时应检查是否为极简版或插件禁用;正则方案仅作精细控制备选,正确写法为^\s*$\r?\n并严格设置模式。

优先用「移除空白行(包括空白字符)」菜单项
Notepad++ 7.9+ 内置的 编辑 → 行操作 → 移除空白行(包括空白字符) 是最稳方案,不依赖正则、不挑编码、不误吞 BOM 或换行符。它能正确处理含空格、\t、\f、Unicode 空白(如 \u00A0)的“伪空行”,也兼容 UTF-8 with BOM 文件。
如果菜单里没看到这个选项,大概率是安装了极简版,或插件被禁用——别折腾 TextFX,它在新版本中已过时,且在 UTF-8-BOM 文件里可能吃掉 BOM 头。
正则替换必须写对:^\s*$\r?\n
当菜单不可用,或你需要保留首尾空行、只压平连续空行等精细控制时,才上正则。但网上流传的 ^\s+ 或 ^\s*$ 单独使用都不完整:
-
^\s+只匹配行首有空白的行,漏掉纯\r\n或\n的空行 -
^\s*$能匹配整行空白,但不包含换行符,替换后可能残留“视觉空行”(尤其 Unix 换行文件) - 正确写法是
^\s*$\r?\n:^ 到 $ 锁定内容,\r?\n显式捕获并删除换行符
务必勾选「正则表达式」模式,禁用「扩展」模式(\s 和 ^$ 在扩展下无效),且不要加 g 或 m 标志——Notepad++ 不认。
删之前必须预览,否则容易误删
正则替换是全局不可逆操作,大文件下 Ctrl + Z 可能无法逐层撤回。安全做法分两步:
- 先按
Ctrl + F,输入^\s*$(同样勾选正则),点「全部高亮显示」——被标黄的才是将被删的行,肉眼确认无误再动手 - 重要文件务必先
Ctrl + A → Ctrl + C粘贴到新标签页备用;别在未保存的 FTP 连接中直接操作,网络卡顿可能导致「全部替换」中途失效且无提示
删完格式异常?先看右下角换行符类型
空行删完出现段落粘连或跳行错乱,大概率不是删错了,而是换行符混用导致的后续解析问题:
- 点 Notepad++ 窗口右下角,看显示的是
DOS、UNIX还是MAC - 统一格式:菜单
编辑 → 文档格式转换 → 转为 UNIX 格式(推荐,兼容性最好)或转为 DOS 格式(Windows 命令行友好)
这步不解决空行本身,但能避免复制进终端、Git 提交、Python readlines() 时出现诡异换行错误——真正难的从来不是“怎么删”,而是“该留哪几行”,业务规则一变,正则就得跟着调。











