VSCode 1.86+ 原生支持文件嵌套,需配置 explorer.fileNesting.patterns,如 "*.component.ts": ["*.component.html", "*.component.css"],且要求父子文件同目录、命名严格匹配、explorer.fileNesting.enabled 为 true。
VSCode 怎么启用文件嵌套(file nesting)功能
VSCode 1.86+ 原生支持文件嵌套,不需要插件。关键不是“设置”,而是正确配置
这个设置项——它控制哪些文件该被谁折叠进去。
常见错误是直接搜“嵌套”或“折叠”,结果装了过时插件(比如
),反而和原生功能冲突,导致嵌套不生效或行为异常。
打开设置(
或
),搜
点击「在 settings.json 中编辑」,添加类似这样的规则:
注意:键(key)是“父文件”模式,值(value)是“子文件”列表;路径通配符只支持
和
,不支持正则。
为什么改了 patterns 还不嵌套?检查这三点
最常卡在这几个地方,不是配置写错,而是环境或逻辑没对上。
必须为
(默认开启,但可能被其他配置覆盖)
文件必须在同一目录下——VSCode 不跨文件夹嵌套,
和
可以,但
和
不行
文件名必须严格匹配模式:比如你写了
,那
就能匹配,但
或
就不会被识别为父文件
如何让 .spec.ts 文件自动收进对应源文件下面
这是高频需求,但容易配反。核心原则:把
当作“子”,源文件(如
)当“父”。
VSCode 1.118
微软正式发布 Visual Studio Code 1.118 版本 。本次更新重点强化了 AI 开发体验与企业管理能力,其中最引人注目的是新增 Copilot CLI 远程控制功能,允许开发者通过手机或网页远程监控和接管 AI 会话 。同时,为了提高 AI 的运行性价比,新版本优化了令牌缓存策略以降低成本 。此外,1.118 版还引入了 Chronicle 本地历史追踪、TypeScript 7.0 支持以及更严格的企业级访问管控 。
下载
错误配法:
—— 这会让所有
去找同名
,但实际要的是反过来。
正确写法(以 Angular 组件为例):
通用写法(适用于普通模块):
,但要注意命名一致性:必须是
+
,不能是
+
如果想同时支持多种后缀(如
),得单独加一条:
嵌套后文件图标/展开状态异常怎么办
VSCode 的嵌套是纯 UI 层折叠,不影响文件系统或编辑器行为,但会干扰一些依赖文件名的扩展(比如测试运行器、代码导航)。
折叠后点不开子文件?检查是否误启用了
(它会把单文件夹也压缩成一行,和嵌套叠加后视觉混乱)
跳转到定义(
)失效?不是嵌套的问题,而是 TypeScript 语言服务没识别
为关联文件——需确保
包含了 spec 文件(
字段)
嵌套层级太深(比如
→
→
)?VSCode 目前只支持一级嵌套,第二层会被忽略
真正麻烦的是多语言项目里混用不同约定(比如 React 的
+
+
),这时 pattern 规则得写得非常具体,稍有偏差就漏掉一个文件——别指望它智能推断,它只认字符串匹配。
explorer.fileNesting.patternsFile NestingCtrl+,Cmd+,fileNesting.patterns"explorer.fileNesting.patterns": {
"*.component.ts": ["*.component.html", "*.component.css", "*.component.spec.ts"],
"*.service.ts": ["*.service.spec.ts"],
"*.module.ts": ["*.module.spec.ts"]
}***explorer.fileNesting.enabledtruesrc/app/a.component.tssrc/app/a.component.htmlsrc/app/a.component.tssrc/assets/a.component.html"*.component.ts"user.component.tsuser-component.tsuserComponent.ts.spec.ts.ts"*.spec.ts": ["*.ts"].spec.ts.ts"*.component.ts": ["*.component.spec.ts"]"*.ts": ["*.spec.ts"]utils.tsutils.spec.tsutils.tstest-utils.ts.test.ts"*.ts": ["*.spec.ts", "*.test.ts"]explorer.compactFoldersF12.spec.tstsconfig.json"include"a.component.tsa.component.htmla.component.scssButton.tsxButton.module.cssButton.test.tsx