Notepad++的Ctrl+Shift+F不支持多文件夹一次输入,因仅接受单个绝对路径且不解析逗号/分号分隔列表;需逐个路径执行查找,并注意过滤器格式、编码统一及正则捕获组用$1而非\1。

Notepad++ 本身不支持“多文件夹”自动遍历,必须把多个路径拆开、逐个填进 Ctrl+Shift+F 面板——它没有通配路径(如 **/src)、也不支持排除目录(如 !node_modules),填错就静默跳过。
为什么“多文件夹”不能一次填完
Notepad++ 的 Ctrl+Shift+F「在文件中查找」面板只接受单个绝对路径作为扫描起点。它不会递归解析你写的多个路径,也不会识别逗号、分号或换行分隔的路径列表。比如填:C:\proj\src;C:\proj\test 或 C:\proj\src,C:\proj\test,结果都是:0 occurrence(s) found,且不报错。
常见错误现象:
– 明明两个文件夹里都有 api.js,但只扫到其中一个
– 状态栏显示“已搜索 X 个文件”,但数字远小于预期
– 替换后部分文件没变化,打开一看根本没被读取
- 正确做法是:对每个目标文件夹,单独执行一次
Ctrl+Shift+F流程 - 如果路径有共性(如都在
C:\myproject\下),优先用一个父目录 + 勾选「包括子文件夹」代替多个平级路径 - 实在要扫分散路径(如
D:\legacy和E:\new),就得手动切两次:第一次填D:\legacy,第二次填E:\new
跨文件夹替换时过滤器怎么写才有效
过滤器字段不是“建议”,而是硬性白名单。哪怕只错一个字符,整个扫描都会被关闭——不是报错,而是直接跳过所有文件。
正确格式必须满足三点:
– 只用英文分号 ; 分隔
– 每个模式以 * 开头,如 *.js,不能写成 js 或 .js
– 分号前后不能有空格,*.js;*.ts ✅,*.js; *.ts ❌
- 想覆盖 JS、TS、HTML 三类文件:填
*.js;*.ts;*.html - 想扫所有文本类文件(不含二进制):可留空过滤器,但务必先点「查找全部」预览——否则可能误改
.git/config或package-lock.json - 不支持
**/*.js或!node_modules/**/*.js,想跳过某目录,只能把它移出父路径,或临时重命名该文件夹
编码不一致会让多文件夹替换“部分失效”
Notepad++ 在 Ctrl+Shift+F 中统一用右下角状态栏显示的编码去解析所有目标文件。如果你扫的多个文件夹里混着 UTF-8、GBK、ANSI 编码,那只有和当前编码匹配的那批文件会被正常加载和匹配;其余文件里的中文要么变成 ???,要么直接被跳过——你甚至看不到提示。
- 操作前一定看右下角:若显示
ANSI,但你要处理的是 UTF-8 文件,替换大概率失败 - 临时统一方案:先用菜单「编码 → 转为 UTF-8-BOM」批量转存一批文件(注意 BOM 可能影响 Webpack/Vite 构建)
- 正则替换含中文时,确保「查找内容」和「替换为」都用相同编码输入,别复制粘贴网页上来源不明的文本
正则捕获组跨文件夹必须用 $1,不是 \1
在 Ctrl+Shift+F 面板启用正则模式后,反向引用语法是固定的:$1 表示第一个 () 里的内容,$0 是整个匹配项。\1 在新版 Notepad++ 中已完全失效,写了也白写。
使用场景举例:
– 把所有 fetch('/api/v1/users') 改成 fetch('/api/v2/users'),但保留路径后缀:
查找:fetch\('/api/v1(/[^']*)'\)
替换:fetch('/api/v2$1')
- 编号严格按左括号顺序,
(a)(b)(c)对应$1 $2 $3 - 扩展模式(
.匹配换行符)下不支持$1,必须切回「正则表达式」模式 - 换行符不一致会影响多行匹配:Windows 是
\r\n,Linux 是\n;跨平台项目里,建议显式写\r\n或用\R(Notepad++ 内置通用换行符)
真正麻烦的不是操作步骤多,而是每个环节都静默容错——路径少一个字符、分号多一个空格、编码差一点点,它都不报错,只默默跳过。所以每次换路径、换过滤器、换编码,都得先点「查找全部」看实际扫到了哪些文件,再动手替换。











