notepad++原生「移除行首空格」最稳,仅删行首空白不碰行中/行尾/空行,但需确认非只读且菜单未隐藏;正则替换须用^\s+并勾选「正则表达式」,跨文件前务必统一换行符。

用「编辑 → 空白操作 → 移除行首空格」最稳
这个菜单项是 Notepad++ 原生功能,不依赖正则、不踩编码坑,适合单文件快速左对齐。它只动每行开头的空白(含空格、\t、全角空格),不碰行中或行尾,也不会误删空行本身。
常见错误包括:移除行首空格 菜单项在旧版或极简版里可能被隐藏,别去翻 TextFX;如果点开后没反应,先看右下角状态栏是否标着「只读」——只读文件会静默失败。
- 该命令对 UTF-8-BOM、GBK、ANSI 编码都安全,但不处理零宽空格(
\u200B)这类 Unicode 特殊字符 - 如果文件含大量制表符缩进,而你只想清空格、留
\t,这个菜单做不到,得切正则 - 执行后建议按
Ctrl + Shift + P打开「显示所有字符」,确认没有残留·或→
要用正则批量删行首空白,必须写 ^\s+ 并勾选「正则表达式」
^\s+ 是唯一可靠写法:^ 锚定行首,\s+ 匹配一个及以上空白字符(空格、\t、\r、\n、全角空格等),+ 保证不匹配空行本身。写成 ^ + 只认半角空格,^\s* 则可能误删空行(* 允许零长度)。
容易踩的坑:
- 忘记勾选「正则表达式」——
^和\s在「普通」或「扩展」模式下当字面字符处理,完全不生效 - 用了「扩展模式」还填
^\s+,结果报错或无响应(扩展模式不支持\s) - 替换框里不小心多敲了一个空格,结果每行前面被补一个空格,对齐更乱
跨文件批量处理前,先统一换行符格式
Notepad++ 的「移除行首空格」和正则替换都不自动转换换行符。如果一批文件混用 \r\n(DOS)、\n(UNIX)、\r(MAC),删完可能出现段落粘连、Git 报 CRLF 警告、或 Python 读取时多出空字符串。
解决方法很简单:
- 点状态栏右下角显示「DOS」/「UNIX」/「MAC」的位置,左键选择目标系统常用格式(Windows 开发选 DOS,Linux 脚本选 UNIX)
- 再执行一次「移除行首空格」或正则替换
- 这步不是可选项——尤其当你准备把代码提交到 Git 或交给 CI 流水线时,换行符混乱比空格问题更难排查
想保留缩进层级,只删“多余”空格?原生功能做不到
Notepad++ 没有智能判断“哪些空格是缩进、哪些是多余对齐”的能力。^\s+ 是无差别清除,移除行首空格 也是整行扫。如果你的目标是“统一为 2 个空格缩进”,不能靠删,得两步走:
- 先用
^\s+清光所有行首空白 - 再用「编辑 → 行操作 → 增加缩进」两次(每次加一个 Tab 或设定好的空格数)
捕获组方案(如 ^(?!\s{0,2}$)\s+)理论上可行,但实际中易受不可见字符干扰,且无法跨文件稳定复用——不如两步手动来得干净。











