vscode搜索需手动配置search.exclude排除node_modules等目录,files.exclude仅影响资源管理器显示;临时排除可在搜索面板底部输入!/node_modules/等glob规则,不支持正则。

VSCode 的搜索过滤不是“开了就能用”,而是必须主动配置排除规则,否则 node_modules、dist、.git 这些目录会拖慢搜索速度、淹没真实结果。
search.exclude 配置必须手动写,不能只靠 .gitignore
VSCode 不会自动把 .gitignore 里的路径当作搜索排除项。即使你已把 node_modules 加进 .gitignore,全局搜索(Ctrl+Shift+F)默认仍会扫描它。
- 正确做法是打开
settings.json,添加search.exclude字段,例如:
{
"search.exclude": {
"**/node_modules": true,
"**/dist": true,
"**/build": true,
"**/*.log": true
}
}
-
files.exclude只影响资源管理器显示,search.exclude才真正跳过搜索过程 - 路径通配符用
**/xxx,不是*/xxx或xxx/ - 修改后无需重启,但已有搜索面板需关闭重开才生效
在搜索框里临时排除比改配置更快
不是每次都要改 settings.json。对一次性搜索,直接在全局搜索面板底部的 files to include/exclude 输入框里填排除条件更高效。
- 输入
!**/node_modules/**排除整个node_modules目录树 - 输入
!*.min.js排除所有压缩 JS 文件 - 多个排除用空格分隔,例如:
!**/test/** !**/mock/** - 注意:这里不支持 JSON 格式,也不需要加引号或逗号
exclude 规则和正则表达式不能混用
search.exclude 是 glob 模式,不是正则表达式。写成 "**/node_modules/.*" 或 "^node_modules$" 都不会生效。
- 合法写法只有
**/node_modules、**/node_modules/**、**/*.tmp - 如果要按内容排除(比如“不搜含
TODO:的注释”),得用正则 + 全词匹配组合,而不是靠 exclude - glob 中
**表示任意层级嵌套,*只匹配单层目录名 - 排除规则优先级高于包含规则;一旦匹配上 exclude,该路径下所有子文件/子目录都不参与搜索
最容易被忽略的是:search.exclude 对符号搜索(Ctrl+T)、大纲视图(Outline)、甚至部分语言服务器的跳转行为没有影响——它只作用于 Ctrl+Shift+F 的文本扫描。真要全局收窄语义级查找范围,得靠插件或语言配置,不是靠这个设置。











