vscode无“合并工作区窗口”功能,本质是将多进程窗口内容收回到同一实例或用多根工作区替代;需通过任务管理器确认进程数、执行window: merge all windows命令、拖拽至编辑器边缘蓝色框处,并保存为.code-workspace文件固化布局。

VSCode 没有“合并工作区窗口”这回事——你真正要做的,是把多个独立进程的窗口内容收回到一个实例里,或用多根工作区替代多窗口。
怎么判断该不该合并?看进程数,不是看标签数
很多人拖着十几个标签页喊“窗口爆炸”,其实根本不需要合并:单个 VSCode 进程打开 50 个文件是常态。真要合并的,是任务管理器里并存的多个 Code.exe(Windows)或 Electron(macOS)进程。
- Windows:按
Ctrl+Shift+Esc打开任务管理器 → “进程”页签 → 数Code.exe有几个 - macOS:活动监视器 → 搜索
Electron→ 看“实例数”是否 >1 - 只有 1 个进程但标签太多 → 该用分组 +
Ctrl+P+ 关闭预览,不是合并窗口 - 有 2 个以上进程,且每个只开了 1–3 个文件 → 才是
Window: Merge All Windows的适用场景
Window: Merge All Windows 为什么经常失效?
这个命令只对“同源启动、同用户会话”的窗口有效,不是万能胶。常见失效原因:
- 从 Dock/开始菜单反复点击图标新开的窗口,系统可能视为新会话 → 改用命令行:
code --new-window /path/to/project - 双击
package.json或其他文件直接打开的窗口,常以临时工作区启动 →Window: Merge All Windows对它无效 - 某些插件(如旧版 GitLens)劫持窗口创建逻辑 → 临时禁用插件再试
- 命令必须在你希望“保留为主窗口”的那个窗口中执行,且焦点要落在它上面
拖拽合并失败?重点检查三处位置和设置
拖拽是最常用操作,但失败往往不是手抖,而是目标区域或配置不对:
-
window.dragAndDropTabs必须为true(默认开启,但插件或手动修改可能关掉)→ 在设置里搜这个配置项确认 - 拖拽目标必须是“编辑器区域边缘”,不是标题栏、侧边栏或资源管理器 → 拖到左侧边缘会触发预览,拖到顶部标签栏空白处无反应;正确位置是编辑器左右/上下边缘,出现蓝色高亮框才松手
- macOS 用户注意:
Cmd+点击 Dock 图标启动的窗口比右键 Dock → “New Window” 更容易被合并
更稳的长期方案:用 .code-workspace 替代多窗口
与其反复合并,不如一开始就用多根工作区固化结构。它不依赖进程状态,重启后布局 100% 还原:
- 在任一窗口中执行
File → Save Workspace As…,保存为my-projects.code-workspace - 编辑该文件,在
"folders"数组里添加路径,例如:{ "folders": [ {"path": "frontend"}, {"path": "../backend"}, {"path": "../shared"} ] } - 关闭所有窗口,双击该
.code-workspace文件,或运行code my-projects.code-workspace - 所有项目加载进同一窗口,支持跨项目搜索、统一调试、共享终端 —— 而且不会因误点 Dock 图标又弹出新窗口
真正的复杂点在于:多窗口看似自由,实则破坏终端上下文、调试会话隔离、Git 状态同步;而多根工作区要求路径写法严谨(相对路径以 workspace 文件为基准)、设置需权衡全局与局部优先级——这些细节一旦忽略,问题会藏得更深。











