VSCode无法合并多个独立窗口,因每个窗口是独立进程;正确做法是创建多根工作区(.code-workspace)统一管理多个项目。

VSCode 不能把多个独立窗口“合并”成一个,但能用 .code-workspace 把多个项目加载进同一个窗口——这才是你真正需要的操作。
为什么不能直接合并窗口?
VSCode 的每个窗口是独立进程(Windows 看 Code.exe 数量,macOS 看 Electron 实例数)。进程之间无法“合并”,只能把文件/项目迁入一个窗口并组织好。所谓“合并窗口”,其实是误传;正确目标是:统一上下文、共享搜索、跨项目跳转、一致终端行为。
- 如果你看到多个 VSCode 图标在任务栏/Dock,那大概率是多个进程 → 需要收编到一个
.code-workspace - 如果只是标签页太多、切换困难 → 不是窗口问题,该用分组+预览关闭+书签,不是建工作区
- 双击文件(如
package.json)打开的窗口常为临时会话,Window: Merge All Windows对它无效
创建多根工作区(.code-workspace)的实操步骤
这是唯一能持久化、可协作、支持调试与终端联动的方式。关键动作只有三步,但每步都有易错点:
- 先在一个空窗口或任一项目窗口中,依次执行
File → Add Folder to Workspace…,把所有项目目录加进来(注意:不是Open Folder) - 立刻执行
File → Save Workspace As…,保存为my-system.code-workspace(后缀必须是.code-workspace) - 关闭所有窗口,**双击这个
.code-workspace文件重新打开** —— 此时所有项目才真正生效
不保存就关窗?所有添加的文件夹瞬间丢失。保存了但没双击它打开?VSCode 仍以单根模式启动,资源管理器顶部只显示一个根目录。
路径写法决定团队能否开箱即用
.code-workspace 文件里的 "path" 字段,直接影响别人能否直接运行。别写绝对路径,也别假设目录结构固定:
- ✅ 推荐:
"path": "backend"或"path": "../shared-utils"(相对路径,要求.code-workspace放在所有项目的共同父目录下) - ❌ 避免:
"path": "/Users/you/project/backend"(绝对路径,别人打开报path does not exist) - ⚠️ 注意:路径是相对于
.code-workspace文件位置计算的,不是当前打开的窗口路径
保存后右键资源管理器里的任意根目录,若出现 Remove Folder from Workspace 而非 Close Folder,说明已成功进入多根模式。
活动文件夹(Active Folder)决定终端和调试行为
多根工作区里没有“全局当前项目”。VSCode 默认取 folders 数组第一个路径为 Active Folder,它控制:
- 集成终端默认启动路径(
cd到哪) -
launch.json从哪个.vscode/下读取(只认活动文件夹下的配置) - ESLint / Prettier 等扩展的配置作用域
想为 frontend 开终端?右键资源管理器中 frontend 根目录 → Set as Active Folder。这个操作不会自动发生,必须手动切。
最常被忽略的是:即使五个项目都加进去了,只要没点“保存工作区为…”,它们就是内存幻影;而一旦保存了,.code-workspace 就成了整个开发状态的唯一事实来源——包括已打开的标签页、终端历史、甚至搜索高亮范围。


















