VSCode不支持合并已打开的独立窗口,而是通过Multi-root workspace在一个实例中加载多个项目根目录;需用“Add Folder to Workspace”添加文件夹并保存为.code-workspace文件,而非“Open Folder”覆盖当前窗口。

VSCode 不支持传统意义上的“多个项目窗口合并”
VSCode 本身没有“合并窗口”功能,所谓“多个项目共存”,实际是通过 Workspaces(工作区)或 Multi-root workspace 实现的——它不是把已打开的独立窗口强行合到一起,而是从一开始就把多个文件夹组织进一个统一的编辑器实例中。
用 Multi-root workspace 管理多个项目目录
这是最接近“合并多个项目”的标准做法:在一个 VSCode 窗口中同时加载多个不相关的项目根目录,各自保留独立的设置(如 settings.json、tasks.json)、扩展启用状态和调试配置。
- 打开 VSCode(确保当前无打开文件夹)
- 执行命令
File > Add Folder to Workspace...,依次添加多个项目文件夹 - 保存工作区:执行
File > Save Workspace As...,生成一个.code-workspace文件(本质是 JSON,可手动编辑路径和folders列表) - 下次双击该
.code-workspace文件,即可一次性恢复全部项目上下文
注意:extensions.ignoreRecommendations 或 editor.tabSize 这类设置若写在工作区级 settings.json 中,会作用于所有根目录;若想按项目差异化,需在各项目子目录下放独立的 .vscode/settings.json。
别误用 “Open Folder” 覆盖当前窗口
常见错误:先打开项目 A,再用 File > Open Folder... 打开项目 B —— 这会**关闭 A 并只显示 B**,不是合并。VSCode 默认行为是单根目录模式,除非主动进入 Multi-root 流程。
- 如果已误操作导致项目丢失,可快速回退:执行
File > Reopen Recent > [项目名] - 想临时对比两个项目?右键资源管理器中的某个文件夹 →
Reveal in Explorer,再拖拽到另一个窗口的侧边栏(仅限同系统且窗口未最小化) - 跨窗口复制文件时,注意
files.exclude和search.exclude是按窗口生效的,不会自动同步
扩展和终端行为在 Multi-root 下有隐含限制
不是所有功能都天然适配多根工作区。例如:
-
Python扩展默认只对第一个根目录激活解释器,其余需手动在每个文件夹内运行Python: Select Interpreter -
Git面板只显示当前活动根目录的变更;切换根目录后,需手动点顶部 Git 标签旁的仓库下拉菜单切过去 - 集成终端启动时默认工作目录是“活动文件所在根目录”,不是工作区根;可通过
Terminal > New Terminal (In Active Workspace)命令指定
真正难处理的是调试:每个 launch.json 必须放在对应项目的 .vscode/ 下,且 cwd 字段要写相对路径(如 "${workspaceFolder}/backend"),否则断点可能不命中。


















