files.exclude必须用glob模式(如"**/node_modules":true)且路径相对于工作区根目录,不支持正则或相对路径;它仅控制资源管理器显示,与search.exclude互不影响。

files.exclude 用 glob 写路径,不是正则也不是本地相对路径
VSCode 的 files.exclude 不接受正则表达式,也不按你当前终端 pwd 解析路径——所有路径都相对于工作区根目录,且必须是 glob 模式。写错格式会导致整个资源管理器变空,或完全不生效。
常见错误包括:
-
"node_modules"→ 只匹配根目录下的node_modules,子目录里的不会被隐藏 -
"src/node_modules"→ 只匹配src/下的,漏掉packages/foo/node_modules -
"**/*"或"**"→ 过于宽泛,资源管理器直接空白(不是崩溃,是全过滤) -
"dist/**"→ VSCode 不识别这种非标准开头,无效
正确写法统一用 "**/xxx" 前缀,例如:"**/node_modules"、"**/.vscode"、"**/logs/**"(末尾 /** 表示递归排除子内容)。
隐藏特定文件(如 .env、.htaccess)要先删默认规则
VSCode 默认自带 "**/.*": true,它会把所有以 . 开头的文件和文件夹(包括 .env、.git、.DS_Store)全部过滤掉。这不是系统级隐藏,是 files.exclude 主动拦的。
想让 .env 显示出来,得手动删掉或注释掉这一行。但注意:
- 只改用户设置(
settings.json)可能没用——如果项目里有.vscode/settings.json,它会完全覆盖用户配置 - 删完保存后,不用重启 VSCode,但要关闭再重新打开文件夹(
File > Close Folder→File > Open Folder),否则资源管理器缓存不刷新 - 若只想放行部分点文件,可单独加精确规则:
"**/.DS_Store": true、"**/.git/**": true,再删掉通配的"**/.*"
files.exclude 和 search.exclude 是两套独立配置
很多人配了 files.exclude 发现搜索还是搜不到某些文件,是因为 search.exclude 在另一层拦着。两者分工明确:
-
files.exclude控制资源管理器、Ctrl+P文件列表、新建/保存路径提示 -
search.exclude只影响Ctrl+Shift+F全局搜索结果,对侧边栏毫无作用 - 它们的值结构一样,都是
{"**/dist": true}这种对象,但必须分别写,不会自动同步
典型误操作:在设置界面里只点了 search.exclude 的开关,以为“排除”就全局生效了;结果文件夹还在资源管理器里,搜索也搜不到——其实是两个地方都没配对。
工作区设置优先级最高,别配错地方
VSCode 加载 files.exclude 时,顺序是:工作区 .vscode/settings.json > 用户设置 > 内置默认。这意味着:
- 如果你在项目根目录下已有
.vscode/settings.json,里面定义了files.exclude,那用户级设置就完全失效 - 想让某项目独有隐藏规则(比如只在后端隐藏
dist,前端保留),必须把配置写进该项目的.vscode/settings.json,并确保它是完整 JSON 对象(不能只写一个字段) - 团队项目建议把
.vscode/settings.json提交到 Git,避免每人各自配错
路径匹配的细节最容易被忽略:漏掉 **/ 前缀、混用斜杠方向、在空格路径里多加引号或转义——这些都会让规则静默失效,而 VSCode 不报错,只会让你对着空资源管理器发呆。


















