search.exclude仅路径匹配不控搜索深度,匹配即剔除结果;写"dist": true或"**/dist": true均可递归跳过整个目录树;限制深度需用rg --max-depth或单独开窗口。

search.exclude 不能限制“不遍历子文件夹”,它只决定跳过哪些路径
VSCode 的 search.exclude 本质是路径匹配过滤,不是搜索深度控制。它不会让 VSCode “停在某一层不往下进”,而是等它完整扫描到某个文件时,再拿路径去比对规则——如果匹配,就从结果里剔掉。所以不存在“禁止遍历子目录”的开关,只有“扫到了也忽略”的策略。
想跳过某文件夹下的所有内容,直接写文件夹名即可
VSCode 默认对 search.exclude 中的路径做**递归排除**:只要键是文件夹名(不带 /**),整个目录树都会被跳过。
-
"dist": true→ 跳过dist/、dist/a.js、dist/src/main.ts全部 -
"**/dist": true→ 同样跳过所有层级的dist目录及其全部子内容 -
"dist/**": true→ 冗余写法,效果同上,但旧版本可能误判,不推荐 -
"dist/*.js": true→ 无效,search.exclude不支持后缀级过滤(那是files.exclude或搜索面板里-file:的事)
真要限制搜索深度,得换工具或改用命令行
VSCode 自身不提供“最多搜两层”这类深度参数。如果你的场景是临时查某个扁平目录(比如只看 src/ 下的文件,不想进 src/utils/),可行办法只有:
- 在搜索面板的
Files to exclude输入框里填**/src/*/**(注意:这会排除所有二级及更深路径,但需确认 glob 是否被正确解析) - 用终端配合
grep -r或rg --max-depth 1,例如:rg --max-depth 1 "myFunc" src/ - 把目标目录单独拖进 VSCode 新窗口,让它变成工作区根目录,再搜——这样天然没“子文件夹”可遍历
容易被忽略的坑:排除规则生效前必须重载窗口
改完 search.exclude 后,VSCode 不会立刻刷新已有索引。你可能看到 dist/ 还在搜索结果里,尤其项目大时延迟明显。必须执行 Ctrl+Shift+P → 输入 Developer: Reload Window 强制重载,或者删掉 .vscode/.search 文件夹重建索引。关掉再打开 VSCode 不等于重载窗口,这点常被跳过。











