notepad++ 批量替换需严格按绝对路径、分号分隔的文件过滤器、统一编码、正则反向引用用 $1 等四步执行,否则静默失败;替换后需手动保存。

Notepad++ 不能直接“全局”替换整个磁盘或项目树里的任意文件,它只认你手动指定的绝对路径 + 显式过滤器。所谓“批量替换文件夹中所有文件”,本质是「按路径扫描 + 按后缀筛选 + 按编码加载 + 替换写入」四步闭环,漏掉任何一环都会静默失败。
Ctrl+Shift+F 的目录字段必须填绝对路径
「在文件中查找」(Ctrl+Shift+F)不读取当前打开的标签页,也不解析相对路径。填 ./src、src/ 或留空,结果都是 0 个匹配项 —— 状态栏不报错,只显示数字,极易误判。
- 正确写法:
C:\myproject\src(结尾不加反斜杠更稳妥) - 含空格或中文路径无需引号,Notepad++ 2026 年主流版本已兼容
- OneDrive/WSL 挂载点路径需确认 Notepad++ 进程有读权限(管理员运行不一定有效)
- 路径末尾带括号如
C:\2024(backup)不用转义,这不是正则区域
文件过滤器语法必须严格用英文分号分隔
文件过滤器 字段不是“建议”,而是硬性白名单。写错格式等于关掉扫描开关。
- ✅ 正确:
*.js;*.ts;*.html - ❌ 无效:
*.js, *.ts(逗号)、*.js *.ts(空格)、*.js; *.ts(分号后空格) - 不支持
**/*.js或排除语法,想跳过node_modules?只能不填过滤器,再靠「包括子文件夹」取消勾选——但 Notepad++ 没这选项,所以实际必须手动删掉或移出该目录 - 过滤器为空 = 扫描所有文件,包括
.git/config、package-lock.json,务必先「查找全部」预览
跨文件替换前必须确认编码一致性
Notepad++ 在「在文件中查找」时,会统一用当前界面右下角显示的编码去解析所有目标文件。如果一批文件混着 UTF-8、GBK、ANSI,部分中文根本匹配不上,甚至替换成 ??? 或直接跳过。
- 操作前看右下角状态栏:若显示
ANSI,但你要处理的是 UTF-8 文件,替换后大概率乱码 - 临时解法:先用菜单「编码 → 转为 UTF-8-BOM」批量转存一批文件(注意 BOM 可能影响某些构建工具)
- 正则替换时若含中文,确保「查找内容」和「替换为」都用相同编码输入,不要复制粘贴来源不明的文本
- 换行符不一致也会导致多行匹配失败:Windows 是
\r\n,Linux 是\n;扩展模式下必须写\r\n才能匹配 CRLF
正则替换反向引用必须用 $1 而非 \1
在「在文件中查找」面板里启用正则模式后,捕获组的反向引用语法固定为 $1、$2,\1 在新版 Notepad++ 中已被弃用且不生效。
- 查找:
(const|let|var)\s+(\w+)\s*=\s*(.*?); - 替换:
$1 $2 = /* modified */ $3; -
$0表示整个匹配项,$1是第一个()内容,编号严格按左括号顺序 - 扩展模式下不支持
$1,正则模式下未勾选「. 匹配换行符」则无法跨行捕获 - 测试建议:先点「查找全部」,确认左侧结果列表里每条匹配都带高亮分组,再点「全部替换」
最常被忽略的其实是「全部替换」后文件并未自动保存——它只改内存缓存,你得手动逐个保存,或配合插件如 Python Script 自动触发保存。没保存=白替。











