Explorer Exclude扩展能解决VSCode原生files.exclude无法实现的动态开关、图形化配置、单文件夹临时启用/禁用、规则导出导入及支持!语法反选等需求。

Explorer Exclude 扩展能解决哪些原生做不到的过滤需求
VSCode 原生 files.exclude 只能在资源管理器里隐藏文件,但不支持按条件动态开关、不提供图形界面、也不能单独对某个文件夹临时启用/禁用规则。Explorer Exclude 就是为补这个缺口设计的。
它真正有用的地方在于:
- 右键文件夹 → “Exclude from Explorer” 一键添加规则,不用手写 glob 表达式
- 在状态栏点击图标,实时启停某条排除规则(比如临时显示
node_modules查某个类型定义) - 规则按工作区保存,不同项目互不干扰;还能导出/导入配置,团队共享一致视图
- 支持
!**/src/utils/*.ts这类“排除中再反选”的复杂逻辑,原生files.exclude不认!语法
为什么装了 Explorer Exclude 还要手动改 settings.json
Explorer Exclude 本质是把规则写进 .vscode/settings.json 的 files.exclude 字段,但它只管“增删”,不管“语义校验”。容易踩的坑有:
- 你用右键加了一条
**/dist/**,它会原样塞进 JSON,但 VSCode 实际匹配时,**/dist/**和**/dist效果一样——多写的/**不仅冗余,还可能被其他扩展误解析 - 如果手动在
settings.json里写了"**/build": true,又用 Explorer Exclude 加了同路径规则,两者会叠加生效,导致重复排除(虽然结果一样,但配置混乱) - 它不会自动清理已删除目录的残留规则,比如你删了
temp/文件夹,对应排除项还在 JSON 里躺着,徒增维护成本
search.exclude 和 files.exclude 混用时的实际影响
这两个字段看着像一对,但行为完全不同,混用容易误判效果:
-
files.exclude控制资源管理器左侧文件树是否显示——不显示 = 完全不可见,连右键菜单都点不到 -
search.exclude只影响 Ctrl+P 和全局搜索结果——文件还在树里,只是搜不到 - 如果你只配了
search.exclude而没配files.exclude,node_modules依然霸占整个侧边栏,拖慢展开速度;反之,只配files.exclude,全局搜索仍会扫到那些被隐藏的文件(除非你也开了search.useIgnoreFiles) - 某些语言服务器(如 TypeScript)会读
files.exclude来决定是否加载文件,所以漏配可能导致类型检查跳过本该参与的文件
状态栏过滤插件和文件过滤不是一回事
看到“过滤”就装 Status Bar Customizer 或 Custom CSS and JS Loader,结果发现根本关不掉资源管理器里的文件——这是混淆了两个维度。
状态栏插件只动 .statusbar-item DOM 节点,和文件系统视图零关系。真想让 dist/ 不出现在侧边栏,唯一可靠路径还是:files.exclude + Explorer Exclude(可选)+ 确保没在 search.exclude 里漏掉同名但不同路径的规则(比如 dist 和 **/dist 同时存在)。
最常被忽略的一点:VSCode 的 glob 匹配是路径级的,dist 会匹配项目根下的 dist/,但不会匹配 packages/foo/dist/;要全覆盖,必须写 **/dist。这个细节不注意,过滤就永远差一层。


















