vscode无“合并窗口”功能,本质是用.code-workspace多根工作区替代多进程窗口;需先打开文件夹再add folder to workspace,保存为.code-workspace文件才能持久化多项目布局。

VSCode 没有“合并窗口”这个操作——你拖拽一个窗口的标签栏到另一个窗口顶部,大概率不会变成分组编辑器,而是触发新窗口创建、卡死标签,或直接失败。所谓“合并多个项目到一个窗口”,本质是放弃多窗口思路,改用 .code-workspace 多根工作区。
用 Add Folder to Workspace 添加项目进当前窗口
这是最常用也最容易误用的操作:它不新建窗口,只把文件夹加入当前工作区。
- 必须先打开一个文件夹(
File → Open Folder…),不能只开单个文件,否则.vscode/settings.json不生效 - 右键资源管理器空白处或已打开的根目录 →
Add Folder to Workspace…,选另一个项目路径 - 添加后,左侧资源管理器会显示多个根目录,但所有项目共享同一套扩展启用状态、终端、调试配置和 Git 仓库视图
- 如果加错,右键对应根目录 →
Remove Folder from Workspace即可撤回
保存为 .code-workspace 文件才能持久化多项目
临时添加的文件夹在关闭 VSCode 后会丢失,必须显式保存为工作区文件。
- 执行
File → Save Workspace As…,保存为my-projects.code-workspace - 该文件是 JSON,可手动编辑:
"path"值支持相对路径(如"backend")或绝对路径(如"/Users/name/project"),但跨平台协作时优先用相对路径 - 保存后关闭所有窗口,再双击该
.code-workspace文件打开——这才是真正复用工作区的方式 - 别指望用
code .打开父目录就能自动加载;必须明确打开.code-workspace文件本身
为什么不能靠拖拽或菜单“合并窗口”?
VSCode 的窗口是进程级隔离单位,没有底层机制支持把两个独立窗口“吸合”成一个。所谓“合并”只是用户误解。
-
Ctrl+Shift+N(Win/Linux)或Cmd+Shift+N(macOS)新建的是全新进程,不是标签页 - 试图拖拽窗口标题栏到另一窗口顶部,在 VSCode 1.85+ 和 macOS 上基本失效,多数情况生成第三个空窗口
- 菜单里的
New Window在某些系统(如 macOS Dock 点击)默认复用已有实例,不可靠 - 真正需要物理隔离(比如不同 Node.js 版本、互斥 ESLint 规则),就得用
code --user-data-dir配合--new-window,否则连扩展启用状态都会串
多根工作区不是万能方案:它让搜索、跳转、调试联动变方便,但也意味着你改一个项目的 settings.json,可能意外影响另一个项目的行为。要不要用,取决于你手头的多个项目之间到底有没有上下文耦合。











