直接配置 files.exclude 和 search.exclude 可分别控制侧边栏显示与全局搜索范围,二者互不影响;files.exclude 仅隐藏资源管理器中的文件(纯 ui 层),不删文件、不改 git、不影响调试或 ctrl+p;search.exclude 则决定 ctrl+shift+f 是否扫描对应路径;两者规则语法相同但作用域不同,需同时配置才能彻底排除如 node_modules;推荐写法为 "**/node_modules": true;路径区分大小写,不支持 ! 取反;files.watcherexclude 需同步配置以避免监听卡顿;修改后无需重启,但已触发监听可能需保存或焦点切换才释放;工作区设置优先级高于用户级,团队协作应只提交项目强相关排除项;vs code glob 不解析符号链接、不读 .gitignore,路径错误将静默失效。

直接改 files.exclude 和 search.exclude 就能分别控制侧边栏显示和全局搜索范围,但两者互不影响,必须分开配,否则你会看到文件夹却搜不到、或搜不到却还在侧边栏里堆着。
files.exclude 只管左侧资源管理器显示
它不删文件、不改 Git、不影响调试或 Ctrl+P 打开,纯 UI 层隐藏。常见错误是只配了 search.exclude 却指望侧边栏也消失——不会。
-
"**/node_modules": true→ 隐藏所有层级的node_modules(推荐写法) -
".git": true→ 只隐藏根目录下的.git;想连子模块也藏,得用"**/.git": true -
"dist/**": true→ 无效;VS Code 不认这种开头无**/的写法,应写成"**/dist": true - 已打开的文件标签页不会自动关闭,这是正常行为,不是配置失效
search.exclude 控制 Ctrl+Shift+F 搜索是否扫描
它和 files.exclude 规则语法一致,但作用域完全不同:哪怕你把 node_modules 从侧边栏藏得干干净净,只要没配 search.exclude,它照样出现在搜索结果里。
-
"**/logs": true→ 搜索时跳过所有logs目录及其子文件 -
"**/*.min.js": true→ 排除压缩后的 JS,避免干扰源码阅读 - 在搜索面板右上角点
files to exclude输入框临时加规则,如node_modules, **/build,仅本次搜索生效,优先级高于search.exclude - 路径区分大小写(尤其 Linux/macOS),
Node_modules不会匹配node_modules
files.watcherExclude 必须同步配,否则监听卡顿
大型项目里,node_modules 或 dist 下成千上万个文件被 VS Code 实时监听,会导致 CPU 升高、保存变慢、热更新延迟。这个配置不控制显示或搜索,只告诉文件系统“别盯着这些目录看”。
-
"**/node_modules": true→ 和files.exclude、search.exclude保持一致,避免割裂 - 不支持
!取反语法,没法写“排除所有但保留src/lib” - 修改后无需重启,但已触发的监听可能要等下次保存或焦点切换才释放
- 若用了 webpack/vite 等 dev server,这个设置能明显减少热重载抖动
工作区设置优先级最高,多项目混用时务必写进 .vscode/settings.json
用户级设置(全局)会被工作区设置覆盖。如果你在 A 项目里想显示 docs,B 项目里想隐藏,那不能只靠全局配置,必须为每个项目单独建 .vscode/settings.json。
- 新建
.vscode文件夹(若不存在),再建settings.json - 粘贴完整 JSON 对象,不要只写一个字段;例如:
{"files.exclude": {"**/dist": true}, "search.exclude": {"**/dist": true}, "files.watcherExclude": {"**/dist": true}} - 右下角状态栏显示「工作区设置」才说明生效;显示「用户设置」就是配错了位置
- 团队协作时,只提交与项目强相关的排除项(如
"**/build"),别把个人临时目录(如"**/tmp")推上去
真正容易被忽略的是:VS Code 的 glob 匹配不解析符号链接、不读 .gitignore、也不自动同步任何外部规则——你写了什么,它就信什么。路径写错一个斜杠、少一个星号、多一个空格,整个规则就静默失效,而 VS Code 连警告都不会给你。











