VSCode需启用explorer.fileNesting.enabled并配置explorer.fileNesting.patterns,如"index.ts": ["index.test.ts"],规则仅对同目录下严格匹配的文件生效,不支持通配符或跨目录嵌套。

VSCode 怎么让 index.ts 和 index.test.ts 折叠在一起
VSCode 本身不支持“文件嵌套”这个概念,所谓“嵌套显示”其实是靠 "explorer.autoExpandSingleChildFolders" 和文件名约定 + 自定义 "explorer.fileNesting.patterns" 实现的视觉折叠效果。核心不是真把文件合并,而是让编辑器把某些文件识别为“子项”,自动缩进并收在父文件下面。
常见错误是直接改 settings.json 却没启用 explorer.fileNesting.enabled,结果配了 pattern 也完全不生效。
- 必须开启:在设置里搜
file nesting,勾选Explorer > File Nesting: Enabled,或手动加"explorer.fileNesting.enabled": true - 基础规则写法:
"explorer.fileNesting.patterns": { "index.ts": ["index.test.ts", "index.spec.ts", "index.styles.ts"] } - 注意键名(
index.ts)必须是真实存在的文件名,不能带通配符;值数组里的文件必须和它同目录,且命名要严格匹配 - 如果想对所有
*.ts都套一套测试文件,得逐个列:"user.service.ts": ["user.service.test.ts"],VSCode 不支持"*.ts": ["*.test.ts"]这种通配写法
explorer.fileNesting.patterns 的路径匹配逻辑是什么
它只看文件名,不看路径层级。也就是说,"Button.tsx": ["Button.stories.tsx"] 这条规则,只要同目录下存在 Button.tsx 和 Button.stories.tsx,就会把后者缩进显示在前者下方;但如果 Button.stories.tsx 在 stories/ 子目录里,就不会被识别。
这也意味着:你不能用它实现跨文件夹嵌套(比如把 src/components/Button/index.tsx 和 src/stories/Button.stories.tsx 拉一起),那是项目结构问题,得靠符号链接或插件解决。
- 规则只作用于同一级目录,不递归、不模糊匹配
- 大小写敏感:写成
"button.tsx"就匹配不了Button.tsx - 扩展名必须完整一致:
"index.js"不会匹配index.mjs或index.cjs - 空格和点号都要写准,
"index .ts"或"index.ts "都无效
为什么改了 settings.json 但文件树没变化
最常踩的坑是改了全局设置,却在工作区(workspace)里开了覆盖配置——VSCode 优先读取 .vscode/settings.json,如果里面也有 explorer.fileNesting.patterns,就会完全忽略用户级设置。
另一个隐蔽问题是缓存:VSCode 不会实时监听 settings 变更并重绘资源管理器,改完得手动刷新文件树(右键空白处 → Refresh Explorer),或者关掉再打开窗口。
- 检查当前生效的是哪一层设置:打开命令面板(
Ctrl+Shift+P),运行Preferences: Open Settings (JSON),看顶部路径提示是User还是Workspace - 确认没有拼写错误,尤其是引号是否全角、逗号是否遗漏、括号是否闭合
- 如果用了单引号或中文引号,VSCode 会静默失败,不报错也不生效
- 重启 VSCode 并非必须,但
Developer: Reload Window命令比单纯刷新 Explorer 更可靠
嵌套后双击子文件,为什么打开的是独立标签页而不是展开父节点
这是设计如此,不是 bug。VSCode 的嵌套只是 UI 层的视觉分组,不改变文件打开行为。双击 index.test.ts 就会像普通文件一样新开标签页,不会自动展开 index.ts 所在的父节点,也不会高亮关联关系。
如果你需要点击测试文件时顺带定位到对应源码,就得另配插件(如 Test Mate)或自定义命令,纯靠 fileNesting 做不到。
- 嵌套不提供跳转、不绑定语义、不参与搜索过滤
- 它唯一作用是减少视觉噪音,让文件树更紧凑——仅此而已
- 别指望靠它替代
Go to Definition或测试运行器的文件联动
enabled 开关、同目录限制、全角字符这三点,基本就能稳住。


















