最稳方案是优先用notepad++ 7.9+内置“移除空白行(包括空白字符)”功能,它安全处理含空格、制表符、bom后空白等伪空行;菜单缺失时才用正则^\s*$\r?\n,并务必勾选“正则表达式”、预览确认。

Notepad++ 删除所有空白行,最稳的方案不是靠正则硬刚,而是优先用内置菜单功能;只有它失效时,才切正则,且必须写对 ^\s*$\r?\n ——错一个字符,就可能漏删、误删,或在旧版本里直接不生效。
为什么「移除空白行(包括空白字符)」比「删除空行」更可靠
多数人想删的“空行”,其实是视觉上为空、但含空格、\t、UTF-8 BOM 后空白、甚至 \u00A0(不间断空格)的伪空行。编辑 → 行操作 → 删除空行 只匹配纯 \r\n 或 \n 的行,对这些伪空行完全无感。移除空白行(包括空白字符) 是 Notepad++ 7.9+ 内置功能,不依赖正则引擎,能安全吞掉整行仅含空白符的内容,且不破坏 BOM、不改换行符、不误删非空行。
- 新版界面常把完整名称折叠显示为「移除空白行」,鼠标悬停或进
设置 → 快捷键映射 → 主菜单查全名确认 - 如果菜单里没这项,大概率是用了极简/便携版,或
Line Operations插件被禁用——别重装,直接切正则方案 - 该命令对 UTF-8(含 BOM)、GBK、ANSI 编码都有效,但不处理零宽空格(
\u200B)等 Unicode 特殊空白
正则替换必须写对:^\s*$\r?\n
菜单不可用时才上正则,但网上常见的 ^\s+、^\s*$、\r\n\r\n 都不完整:^\s+ 漏掉纯 \n 行;^\s*$ 不带换行符,替换后可能残留“视觉空行”;\r\n\r\n 只能处理双空行,三个连空就失效。真正覆盖全部场景的是 ^\s*$\r?\n:
-
^到$锁定整行内容,\s*匹配零个或多个空白(含空格、\t、\f、\v,也隐式兼容 BOM 后空白) -
\r?\n显式捕获并删除换行符,?表示\r可选,同时兼容 Windows(\r\n)和 Unix(\n)换行 - 必须勾选「正则表达式」模式,禁用「扩展」模式(它不支持
^、$和\s) - 别加
g或m标志——Notepad++ 正则引擎不识别,会报错或无响应
删之前必须预览,否则容易误删
正则替换是全局不可逆操作,大文件下 Ctrl + Z 可能无法逐层撤回。安全做法分两步:
- 先按
Ctrl + F,输入^\s*$(同样勾选「正则表达式」),点「全部高亮显示」——被标蓝的才是将被删的行,肉眼确认无误再动手 - 重要文件务必先
Ctrl + A → Ctrl + C粘贴到新标签页备用;避免在未保存的 FTP 连接中直接操作,网络卡顿可能导致「全部替换」中途失效且无提示 - 注意:如果文件末尾没有换行符,
\r?\n无法匹配最后一行;此时需额外跑一次^\s*$(不带换行符)补删
删完格式异常?先看右下角换行符类型
空行删完出现段落粘连、跳行错乱,或复制进终端/Python 中出问题,大概率不是删错了,而是换行符混用导致的后续解析问题:
- 点 Notepad++ 窗口右下角,看显示的是
DOS、UNIX还是MAC - 统一格式:菜单
编辑 → 文档格式转换 → 转为 UNIX 格式(推荐,兼容性最好)或转为 DOS 格式(Windows 命令行友好) - 这步不解决空行本身,但能避免 Git 提交、脚本读取时因混用换行符引发的诡异错误——尤其跨平台协作中,这个细节最容易被忽略











