search.exclude 是唯一生效的配置项,VSCode 全局搜索是否跳过文件夹仅取决于它;files.exclude、.gitignore 等均无效,且需用 **/ 开头、正斜杠、正确 glob 语法,修改后须重载窗口或删 .search 文件夹刷新索引。

search.exclude 是唯一生效的配置项
VSCode 全局搜索(Ctrl+Shift+F)是否跳过某个文件夹,只取决于 search.exclude 的值。其他任何配置——比如 files.exclude、.gitignore、tsconfig.json 或用户级 settings.json 里误写的字段——全都不起作用。
常见错误包括:
- 把
"node_modules": true写进files.exclude:侧边栏确实隐藏了,但搜索照常扫出几千条结果 - 在
package.json或eslint.config.js里加search.exclude:VSCode 根本不读,静默忽略 - 写成
"node_modules/**": true:缺少**/前缀,规则无效
路径必须用 **/ 开头,且只能用正斜杠
VSCode 的 glob 匹配非常严格,写错一个字符就整条规则失效,而且不会报错、不会提示。
正确写法示例:
-
"**/node_modules": true→ 匹配所有层级下的node_modules目录 -
"**/dist/**": true→ 明确排除dist及其全部子内容(比"**/dist"更稳妥) -
"**/.env": true→ 排除所有目录下的.env文件(注意不是".env",否则只匹配根目录)
错误写法及后果:
-
"node_modules"或"node_modules/":不匹配任何路径,VSCode 直接丢弃该规则 -
"**\node_modules":Windows 用户易犯,反斜杠不被解析,等同于没写 -
"**/dist/":结尾多一个/,真实路径不含末尾斜杠,无法命中
改完配置后搜索结果不更新?不是配错了,是索引没刷新
VSCode 搜索依赖本地缓存索引,修改 search.exclude 后不会自动重建。你看到的“还在搜 node_modules”大概率是旧索引残留。
必须手动触发刷新:
- 最可靠方式:
Ctrl+Shift+P→ 输入Developer: Reload Window→ 回车(保留所有标签页) - 更彻底方式:删掉项目根目录下的
.vscode/.search文件夹,重启 VSCode 后强制重建 - 临时救急:打开搜索面板后,点右上角 ⋯ → «Files to exclude»,填
**/node_modules,**/dist(注意英文逗号、无空格),本次搜索立即生效
隐藏目录(如 .git、.vscode)默认就被硬编码排除
这不是 search.exclude 控制的,而是 VSCode 内置逻辑。即使你清空 search.exclude,.git 和 .vscode 依然不会出现在搜索结果中。
想让它们被搜到,必须显式反向覆盖:
-
"**/.git": false→ 允许搜索.git/config等文件 -
"**/.vscode": false→ 允许搜索.vscode/tasks.json -
"**/.env": true→ 隐藏文件默认不被硬编码排除,需手动加才跳过
注意:files.exclude 和 search.exclude 完全独立:files.exclude 只影响左侧资源管理器显示,和搜索结果毫无关系。











