ctrl+shift+f是notepad++唯一支持跨文件夹搜索的入口,需正确设置目录(如".")、文件过滤器(如".js;.ts")和勾选“搜索子文件夹”,并关闭“匹配整个单词”以避免漏匹配。

Ctrl+Shift+F 是唯一能跨文件夹搜索的入口
Notepad++ 里按 Ctrl+F 永远只搜当前打开的那个文件,哪怕你标签页开了二十个也毫无关系。想扫整个项目,必须用 Ctrl+Shift+F(或菜单栏「搜索 → 在文件中查找」)。这个对话框里才有三个不可省略的控件:目录、文件过滤器、搜索子文件夹。
常见错误是反复在 Ctrl+F 里调参数、点「查找全部」,结果面板空着——不是功能坏了,是压根没进对地方。关掉当前查找框,立刻重按 Ctrl+Shift+F。
-
目录填.最稳:表示当前已打开文件所在的路径,避免手输中文/空格路径导致旧版 Notepad++ 静默失败 -
文件过滤器必须写具体后缀,例如*.js;*.ts;*.html;空着会扫进node_modules、.git甚至临时日志文件 -
搜索子文件夹不勾,只查该目录下的一级文件;勾了才真正递归,但大项目下响应明显变慢
“匹配整个单词”默认开着,但一开就漏匹配
这个选项看着安全,实则是全局搜索里最常踩的坑。比如搜 user,但目标变量是 username、api_user_id 或 is_user,只要勾了它,全被过滤掉——这不是 bug,是设计如此。
除非你明确只想命中独立单词(比如文档中单独出现的 error,而非 enderror),否则一律关掉 匹配整个单词。
- 需要兼顾精确与模糊?改用正则:
\buser\b表示单词边界,比开关更可控 -
区分大小写和匹配正则表达式默认关闭;开了却没写对语法(比如.*想跨行但实际不支持),结果就是零匹配 - 搜
console.log却写了带点的字面量?不勾正则时,.就是普通字符,代码里若换行或有空格,就匹配不上
搜索结果双击打不开?两个设置必须开
搜完一堆结果,点底部面板里的某一行没反应,不是插件冲突,大概率是两个基础选项被关了:
- 去「设置 → 首选项 → 搜索」,确认勾选了
在新标签页中打开找到的文件;没勾的话,双击只高亮当前行,不会加载文件内容 - 同时检查「设置 → 首选项 → MISC → 自动完成」里的
Enable auto-loading for large files是否开启;否则大文件首次点击不会读入内存,自然无法定位 - 勾选后首次打开大项目可能卡 1–2 秒,这是 Notepad++ 在后台预读内容,属正常行为
- 如果目标文件已被关闭,且没开这两项,双击等于白点
正则模式下 .* 匹配不到换行,得用 \R
Notepad++ 的正则引擎默认不启用单行模式(s 标志),所以 .* 只匹配单行内任意字符,遇到换行就停。想搜跨多行的结构(比如 function foo() { ... }),不能靠 .* 硬扛。
- 用
\R显式匹配换行符(Notepad++ 支持的特殊序列),例如:function\s+\w+\(\)\s*\{\R.*?\} - 别信网上“勾选 . 匹配换行”的说法——Notepad++ 根本没有这个选项,那是 VS Code 或 Sublime 的逻辑
- 更稳的做法:先用普通搜索定位关键词(如
function),再按F3逐个跳转,人工判断上下文 - 批量替换必须走
Ctrl+Shift+H(或「搜索 → 在文件中替换」),Ctrl+H只作用于当前文件,哪怕你刚从Ctrl+Shift+F搜完一堆结果
文件过滤器分号必须是英文半角,路径末尾加不加斜杠都行,但 node_modules 这类目录得靠过滤器手动排除——Notepad++ 没有内置项目概念,所谓“全局”全靠你填对这三样东西。











