Ctrl+Shift+F 是 Notepad++ 唯一能修改磁盘未打开文件的入口,需填绝对路径、用分号分隔过滤器、匹配实际编码,正则替换用 $1 且须禁用扩展模式,替换后须手动保存。

Ctrl+Shift+F 是唯一能改磁盘文件的入口
Notepad++ 不会自动扫描你“当前打开的项目”或“资源管理器里选中的文件夹”,Ctrl+Shift+F 打开的「在文件中查找」面板是唯一真正操作磁盘上未打开文件的路径。它不依赖标签页,但也不智能——你填什么路径,它就扫什么位置。
常见错误现象:0 occurrence(s) found 却确定文件里有匹配内容,大概率卡在这三处:
-
目录字段填了./src、src/或留空 → 实际等价于“不扫描”,必须填完整绝对路径,例如C:myprojectsrc(结尾不加反斜杠更稳妥) -
文件过滤器写了*.js, *.ts(逗号)或*.js *.ts(空格)→ 无效,必须用英文分号严格分隔:*.js;*.ts;*.html - 右下角状态栏显示的编码(如
ANSI)和目标文件实际编码(如UTF-8)不一致 → 中文根本读不进内存,匹配直接跳过
正则跨文件替换必须用 $1,不是
在 Ctrl+Shift+F 面板里启用「匹配正则表达式」后,捕获组的反向引用语法固定为 $1、$2。 在新版 Notepad++ 中已弃用且不生效,写进去等于白配。
使用场景举例:
- 把
class="btn"统一加data-role="button":查找(class="[^"]*"),替换为$1 data-role="button" - 倒序日期
2023-05-12→12/05/2023:查找(d{4})-(d{2})-(d{2}),替换为$3/$2/$1 -
$0表示整个匹配项,$1是第一个()里的内容,按左括号顺序编号
注意:扩展模式(即勾选「匹配换行符」那个选项)不支持 ,必须切到「正则表达式」模式才能用捕获组。
替换后必须手动保存,否则白干
Ctrl+Shift+H 点击「全部替换」后,修改只载入内存,不会自动写回磁盘。Notepad++ 不提供「一键全部保存」按钮,也没有后台静默落盘机制。
实操建议:
- 先点「查找全部」预览匹配结果,确认范围无误再点「全部替换」
- 替换完成后,逐个点击标签页 →
Ctrl+S保存;或批量选中所有已修改标签页(Ctrl+鼠标点击),右键 → 「保存全部」 - 如果文件太多,可配合插件
Python Script写一行脚本自动保存,但前提是这些文件已在标签页中打开(未打开的文件不会出现在标签页列表里)
子目录、编码、换行符三处最容易被忽略
「包括子文件夹」不勾选 = 只扫你填的那个目录一层;勾选了但还是找不到,可能是路径末尾多了一个反斜杠,或者挂载点(如 \wsl$ 或 OneDrive 同步目录)权限没给够。
编码混用(UTF-8 + GBK)会导致部分文件中文匹配失败,甚至替换成 ???;换行符不一致(
vs
)会让跨行正则失效——想匹配 Windows 换行必须写
,或者用 R(Notepad++ 内置通用换行符序列)。
最麻烦的其实是「静默失败」:没有报错,状态栏只显示数字,你得自己核对路径、过滤器、编码、子目录这四样是否全对。少一个,就等于没执行。


















