VS Code 默认硬编码排除 .git、.vscode 等隐藏目录,与 search.exclude 无关;需显式设 "**/.git": false 才能搜索到,且 files.exclude 与 search.exclude 各自独立控制显示和搜索。

search.exclude 不能控制隐藏文件夹的默认排除行为
VS Code 对 .git、.vscode、.DS_Store 等隐藏目录/文件的过滤,是硬编码在搜索逻辑里的,和 search.exclude 配置无关。你删掉或清空 search.exclude,这些目录依然不会出现在搜索结果中。
真正起作用的是内置默认规则——它比你写的任何 search.exclude 条目都优先。想让它们被搜到,必须显式“反向覆盖”:
-
"**/.git": false—— 写false,不是删掉这一行 -
"**/.vscode": false—— 同理,只删配置项无效 - 所有要放开的隐藏路径,都得用
false显式关闭,默认规则不会自动退让
files.exclude 和 search.exclude 是两套独立系统
很多人以为配了 search.exclude 就能控制侧边栏显示,其实完全不对。想让 .vscode 文件夹从资源管理器里消失,必须改 files.exclude:
-
"**/.vscode": true→ 左侧边栏看不到,且搜索也跳过(双重生效) -
"**/.vscode": false→ 不影响侧边栏,但可让搜索包含它(仅对搜索生效) - 二者互不干扰:
files.exclude控制 UI 显示,search.exclude控制搜索范围
为什么改了 search.exclude 还搜不到 .env 或 .gitconfig?
因为这些是隐藏文件,不是隐藏目录。VS Code 默认只排除 .git 这类目录,.env、.gitignore、.editorconfig 等文件默认是参与搜索的——除非你手动加进 search.exclude。
常见遗漏点:
-
"**/.env": true—— 必须显式加,否则它会被搜到 -
"**/.gitignore": true—— 同理,别指望它自动被忽略 - 注意写法:
".env"不匹配src/.env,必须用"**/.env"
临时绕过所有隐藏项限制的最快方式
不想动配置、又急需搜一次 .git/config 或 .vscode/tasks.json?直接在搜索面板右下角点击「使用排除项」图标(斜杠盖住文件夹的那个),把它关掉即可。
这个开关会临时禁用所有排除逻辑,包括:
- 硬编码的隐藏目录规则(
.git、.vscode) -
search.exclude里写的每一条 -
search.useIgnoreFiles读取的.gitignore
搜完记得再点开,否则下次搜索会慢得明显——尤其当 node_modules 也被一起扫进来时。
最易被忽略的一点:VS Code 的“隐藏文件”概念在搜索中是分层的——目录级有默认拦截,文件级却基本放行;而用户常把两者混为一谈,结果反复检查 search.exclude 却始终找不到原因。


















