用 ctrl+shift+f(windows/linux)或 cmd+shift+f(macos)配合 files to include 输入 glob 模式(如*/api),才能精准搜索含特定字符的文件名;ctrl+f 仅搜文件内容,不扫描文件系统。

直接说结论:用 Ctrl+Shift+F(Windows/Linux)或 Cmd+Shift+F(macOS),配合 files to include 输入 glob 模式,才能精准定位含特定字符的文件本身——不是文件里的内容,而是文件名里带字符。
为什么 Ctrl+F 找不到文件名?
很多人误以为 Ctrl+F 能搜文件名,其实它只在当前打开的文件中搜索文本内容。文件名检索必须走全局搜索通道,否则 VSCode 根本不扫描文件系统结构。
-
Ctrl+F→ 文本内容高亮,仅限单文件 -
Ctrl+P→ 按文件名模糊匹配(支持!node_modules这类排除,但不支持通配符逻辑) -
Ctrl+Shift+F→ 唯一能结合files to include/exclude过滤文件路径的入口
files to include 怎么写才生效?
VSCode 的 glob 规则很严格:不以 **/ 或 / 开头的模式基本无效,尤其 Windows 用户容易写成 src\*.ts(错),正确写法必须用正斜杠 + 通配前缀。
- ✅ 想找所有含
api的文件名:**/api*或**/*api* - ✅ 只搜
src下名字带test的文件:src/**/*test* - ❌
api*.ts(没路径前缀,被当字面量匹配文件名,不递归) - ❌
src\*.ts(反斜杠在 glob 中不识别,Windows 也得用/) - ⚠️ 注意逗号分隔多个规则:
**/*config*,**/*env*
如何排除干扰目录,避免结果泛滥?
默认全局搜索会钻进 node_modules、dist、.git 等目录,导致几百个无关匹配。必须主动填 files to exclude,且写法有坑。
- ✅ 排除所有层级的
node_modules:**/node_modules(推荐,轻量跳过整个目录) - ✅ 排除
dist和日志:**/dist,**/*.log - ❌
node_modules/**或node_modules(VSCode 不认,仍会扫描) - ❌
./node_modules(点斜杠开头不被 glob 解析) - ? 排除和包含是叠加生效:先按
include缩小范围,再按exclude过滤掉其中的子集
搜文件名时要不要开正则?
绝大多数场景不需要。VSCode 的 glob 已足够表达常见需求:* 匹配任意字符序列,? 匹配单字符,** 匹配多级目录。开启 .*(正则)反而容易写错,且不支持 PCRE 全语法。
- 普通需求用 glob 就行:
**/use*Hook*.ts→ 找所有含use开头、Hook结尾的 ts 文件 - 只有极少数需要位置锚定(如文件名以数字开头)才考虑正则:
^[0-9].*\.js$,但必须勾选.*图标且注意转义 - ⚠️ 正则模式下,
files to include/exclude仍只接受 glob,不能混用正则
真正卡住人的从来不是功能有没有,而是 glob 路径写法是否符合 VSCode 的解析规则——少一个 **/,就等于没写;斜杠方向错了,Windows 上照样失效。动手前先确认搜索框底部那两行输入框是否已激活,再填模式,比反复试错快得多。











