Notepad++ 删除行尾空格首选“编辑 → 行操作 → 删除尾部空白”,它精准清除每行末尾空格和制表符,不误删换行符、空行或中间空白,兼容UTF-8/GBK/ANSI编码,但不处理BOM及Unicode零宽空格;若文件只读需先取消只读属性。

用菜单命令删行尾空格最稳
Notepad++ 自带的 编辑 → 行操作 → 删除尾部空白 是首选方案,它只动每行末尾的 和 \t,不碰行首、中间、空行或换行符本身。常见错误是手动按 End → Shift+← → Delete,既慢又容易漏掉制表符;还有人误在「替换」里搜 $ (带空格),结果把换行符当空格删了,导致所有行连成一串。
这个命令对 UTF-8、GBK、ANSI 都有效,但不处理 BOM 或 Unicode 零宽空格(如 \u200B)。如果文件是只读状态,命令会静默失败——右下角状态栏显示「只读」时,得先取消只读属性。
正则删行首空格要小心边界
行首空格必须用 ^\s+,不能写成 ^ +(只匹配空格)或 ^\s*(* 会匹配零长度,可能误触发)。\s 在 Notepad++ 正则里默认包含空格、\t、\r、\n、\f、\v,比手写 [ \t] 更全面。
实际操作中要注意:
- 勾选「正则表达式」模式,否则
^和\s当字面量处理,完全不生效 -
^\s+不会影响空行本身,因为空行没有「非空白字符前的空白」 - 如果文本里混有 UTF-8 BOM(
\xEF\xBB\xBF),它不算\s,得单独搜\xEF\xBB\xBF替换为空再处理
想同时清掉行首+行尾+空行?分三步走
别指望一个正则通吃——^\s+|\s+$|^\s*$\R? 看似简洁,实际在 Notepad++ 里容易因匹配顺序和 \R? 的贪婪性出错,尤其遇到连续空行或末尾无换行符的文件。
更可靠的做法是按顺序执行三个独立操作:
- 先跑一次
编辑 → 行操作 → 删除尾部空白 - 再用正则
^\s+→ 空,删行首空白 - 最后用
编辑 → 行操作 → 移除空白行(包括空白字符)清空行
这三步互不干扰,每步都可预览/撤销,大文件也不卡。若用宏批量处理多个文件,确保第一步是「删除尾部空白」,因为它是唯一不依赖正则、兼容性最强的环节。
为什么删完还看到“空格”?大概率是不可见字符
看起来删干净了,但复制到终端或编译时报错,往往是因为残留了 \u200B(零宽空格)、\uFEFF(BOM)、\u00A0(不间断空格)这类 Unicode 空白。Notepad++ 默认的 \s 和菜单命令都不识别它们。
临时排查方法:
- 打开
视图 → 显示符号 → 显示所有字符,看是否有异常小点或方块 - 用正则搜
[\u2000-\u206F\u2E00-\u2E7F\uFEFF]→ 空,能覆盖常见不可见分隔符 - 真正要长期处理这类文本,建议先导出为纯 ASCII 编码,或改用 VS Code + 扩展(如 Trailing Spaces)
菜单命令省心,但不是万能;正则灵活,但得盯紧换行符类型和不可见字符——这两点最容易被跳过,却最常导致“明明删了,还是不对”。

















