当前位置:首页 > 文章列表 > 文章 > 软件教程 > VS Code 文件嵌套怎样把同名产物收进源文件

VS Code 文件嵌套怎样把同名产物收进源文件

来源:17golang原创 2026-11-03 07:00:51 0浏览 收藏

项目里同时出现 app.ts、app.js、app.d.ts 和 app.js.map 时,VS Code Explorer 很快会被伴随文件占满。与其用 files.exclude 把它们藏起来,不如开启文件嵌套:让产物仍然可访问,但折叠到对应的源文件下面。

官方地址:https://code.visualstudio.com/docs/editing/getting-started/userinterface

在设置中打开 explorer.fileNesting.enabled,再用 explorer.fileNesting.patterns 写“父文件模式 → 子文件模式”规则,就能把同名产物收进源文件;explorer.fileNesting.expand 决定默认展开还是折叠。

先找到文件嵌套的设置入口

文件嵌套作用于 Explorer 的目录展示,不会移动文件,也不会改变磁盘上的目录结构。先确认当前打开的是目标项目,再决定规则只服务这个工作区,还是所有项目都使用。

  1. 在左侧活动栏点击 Explorer,确认项目文件夹已经展开。
  2. 按 Cmd/Ctrl+, 打开 Settings,在搜索框输入 file nesting。
  3. 找到 Explorer › File Nesting: Enabled 并打开;需要控制初始状态时,再找到 Explorer › File Nesting: Expand。
  4. 需要写自定义规则时,点击设置项旁边的打开 JSON 图标,进入当前作用域的 settings.json。
原创界面说明图:VS Code 设置搜索 file nesting 并显示 Explorer 文件嵌套选项
图1:文件嵌套设置入口说明图,展示搜索、启用开关和默认展开选项;不是实际截图。

用 patterns 把同名产物收进源文件

自定义规则写在 explorer.fileNesting.patterns 中。左侧是父文件匹配模式,右侧是用逗号分隔的子文件模式;${capture} 会复用左侧 * 捕获到的同名部分。

例如,一个 TypeScript 项目希望把 JavaScript 编译产物、声明文件和 sourcemap 收到对应的 .ts 文件下,可以使用下面这段严格 JSON:

{
  "explorer.fileNesting.enabled": true,
  "explorer.fileNesting.expand": false,
  "explorer.fileNesting.patterns": {
    "*.ts": "${capture}.js, ${capture}.d.ts, ${capture}.js.map",
    "*.js": "${capture}.js.map",
    "package.json": "package-lock.json, yarn.lock, pnpm-lock.yaml"
  }
}

这段 JSON 不能添加注释,否则设置文件会失效。*.ts 匹配 app.ts,其中 ${capture} 就是 app,所以旁边的 app.js、app.d.ts 和 app.js.map 会成为它的嵌套项。锁文件规则则是把固定的 package.json 作为父文件。

选择工作区范围并确认折叠状态

如果只想让当前仓库采用这套整理方式,在设置界面顶部选择 Workspace 作用域,或把 JSON 写进项目根目录的 .vscode/settings.json。写入 User 作用域会影响其他项目,适合你长期统一维护的文件命名约定。

  1. 在设置页面顶部选择 Workspace,确认左侧标记已经切换。
  2. 把 Explorer › File Nesting: Enabled 设为开启。
  3. 把 Explorer › File Nesting: Expand 设为关闭,让目录首次打开时只显示父文件。
  4. 回到 Explorer,展开目标目录;看到文件名右侧出现嵌套数量,点击父文件左侧箭头即可查看子文件。
原创界面说明图:VS Code Explorer 中源文件展开后显示 JavaScript、声明文件和 sourcemap 嵌套项
图2:规则生效后的 Explorer 状态说明图,展示父文件、嵌套数量和展开后的伴随文件;不是实际截图。

匹配不到或误收时怎样调整

文件嵌套最常见的问题不是功能没有打开,而是匹配模式和真实文件名没有对上。可以按下面的顺序处理:

  • 同名部分没有复用:父模式使用了 * 时,子模式优先写 ${capture};如果父文件名是固定的,则直接写固定子文件名。
  • 只想匹配当前目录名:使用 ${dirname} 代表父文件所在目录名,避免把其他目录里同名文件一起归组。
  • 扩展名需要复用:使用 ${extname},但要先确认它代表的是父文件的扩展名,而不是完整文件名。
  • 不想默认展开:确认 explorer.fileNesting.expand 为 false;它只影响初始展示,不会删除嵌套关系。
  • 规则像隐藏文件一样消失:检查是否同时配置了 files.exclude 或 search.exclude。文件嵌套是“收起但保留”,排除规则则可能让文件根本不显示。
设置解决的问题影响范围
explorer.fileNesting.enabled是否启用文件嵌套User 或 Workspace
explorer.fileNesting.expand嵌套组是否默认展开User 或 Workspace
explorer.fileNesting.patterns哪些文件归到哪个父文件User 或 Workspace
files.exclude是否从 Explorer 隐藏匹配文件User 或 Workspace

最后用一个小场景确认配置

可以在测试目录放置 demo.ts、demo.js、demo.d.ts 和 demo.js.map 四个文件。刷新 Explorer 后,预期只看到一个 demo.ts 父项;展开它,三个伴随文件仍能被打开、复制或删除。若只看到一个文件且没有展开箭头,优先检查规则是否写入了当前工作区的 settings.json,以及父模式中的通配符是否与文件名一致。

常见问题

文件嵌套会改变 Git 或构建工具读取文件的方式吗?

不会。它只改变 Explorer 的可视层级,文件仍在原来的目录中,Git、构建工具和命令行看到的路径不变。

应该用文件嵌套还是 files.exclude?

需要偶尔访问产物时用文件嵌套;确定永远不需要在 Explorer 中查看的目录或文件,才考虑 files.exclude。两者可以同时存在,但排除规则可能先让文件不可见。

为什么配置改了但旧目录没有变化?

先折叠并重新展开目录,再确认设置作用域和 JSON 格式。若仍不变化,检查是否有其他工作区设置或配置文件覆盖了当前值。

把文件嵌套当成 Explorer 的“收纳层”即可:它负责降低目录噪声,不负责隐藏事实。用 ${capture} 对齐同名产物,用 Workspace 作用域限制影响,再用展开箭头确认文件仍可访问,通常就能得到清爽且不丢文件的项目视图。

版本声明
本文转载于:17golang原创 如有侵犯,请联系study_golang@163.com删除
Git rebase --autosquash 怎样整理修复提交Git rebase --autosquash 怎样整理修复提交
上一篇
Git rebase --autosquash 怎样整理修复提交
VS Code 怎样只对 Markdown 文件开启自动换行
下一篇
VS Code 怎样只对 Markdown 文件开启自动换行
查看更多
最新文章
查看更多
课程推荐
  • 前端进阶之JavaScript设计模式
    前端进阶之JavaScript设计模式
    设计模式是开发人员在软件开发过程中面临一般问题时的解决方案,代表了最佳的实践。本课程的主打内容包括JS常见设计模式以及具体应用场景,打造一站式知识长龙服务,适合有JS基础的同学学习。
    543次学习
  • GO语言核心编程课程
    GO语言核心编程课程
    本课程采用真实案例,全面具体可落地,从理论到实践,一步一步将GO核心编程技术、编程思想、底层实现融会贯通,使学习者贴近时代脉搏,做IT互联网时代的弄潮儿。
    516次学习
  • 简单聊聊mysql8与网络通信
    简单聊聊mysql8与网络通信
    如有问题加微信:Le-studyg;在课程中,我们将首先介绍MySQL8的新特性,包括性能优化、安全增强、新数据类型等,帮助学生快速熟悉MySQL8的最新功能。接着,我们将深入解析MySQL的网络通信机制,包括协议、连接管理、数据传输等,让
    500次学习
  • JavaScript正则表达式基础与实战
    JavaScript正则表达式基础与实战
    在任何一门编程语言中,正则表达式,都是一项重要的知识,它提供了高效的字符串匹配与捕获机制,可以极大的简化程序设计。
    487次学习
  • 从零制作响应式网站—Grid布局
    从零制作响应式网站—Grid布局
    本系列教程将展示从零制作一个假想的网络科技公司官网,分为导航,轮播,关于我们,成功案例,服务流程,团队介绍,数据部分,公司动态,底部信息等内容区块。网站整体采用CSSGrid布局,支持响应式,有流畅过渡和展现动画。
    485次学习
查看更多
AI推荐
  • PubMedQA数据集详解:生物医学问答基准、功能与应用指南
    PubMedQA
    深入了解PubMedQA生物医学问答数据集,涵盖其核心功能、使用方法及在临床决策、药物研发等场景的应用,助力提升NLP模型性能。
    852次使用
  • H2O EvalGPT:开源LLM大模型评估与排行榜工具
    H2O EvalGPT
    H2O EvalGPT是H2O.ai推出的开源LLM评估平台,提供详细的大模型性能排行榜、行业特定基准测试及A/B测试功能,助您快速选择最适合项目的高性能大语言模型。
    859次使用
  • LMArena是什么?伯克利AI模型评估平台使用指南与功能解析
    LMArena
    LMArena是加州大学伯克利分校推出的AI模型匿名评测平台。通过盲测投票机制,用户可对比不同大模型回答并生成实时排行榜,助力开发者优化模型及用户选择最佳AI工具。
    938次使用
  • 斯坦福HELM:大语言模型Holistic Evaluation整体评估框架详解
    HELM
    深入了解斯坦福推出的HELM(Holistic Evaluation of Language Models)大模型评测体系。本文解析其核心功能、安装配置步骤及应用场景,涵盖准确性、公平性、鲁棒性等多维度指标,助力开发者全面优化语言模型性能。
    914次使用
  • MMBench详解:多模态大模型基准测试、功能特点与使用指南
    MMBench
    MMBench是由上海人工智能实验室等机构联合推出的多模态基准测试平台,提供细粒度能力评估、大规模数据集及VLMEvalKit工具。本文详细介绍其核心功能、安装使用方法及应用场景,助力开发者全面评估多模态模型性能。
    743次使用
微信登录更方便
  • 密码登录
  • 注册账号
登录即同意 用户协议 和 隐私政策
返回登录
  • 重置密码