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

VSCode 没有真正意义上的“窗口合并”功能,所谓合并,其实是把多个独立进程的窗口内容收回到同一个 VSCode 实例中——关键在识别进程、用对命令、避开拖拽陷阱。
怎么判断是不是真要合并窗口?
很多人误把标签页太多当成“窗口爆炸”,其实该处理的是独立进程:
- Windows:打开任务管理器(
Ctrl+Shift+Esc),看“进程”页签里是否有多个Code.exe - macOS:打开活动监视器,搜索
Electron,实例数 >1 才说明存在多窗口 - 如果只有 1 个进程,但标签栏拥挤 → 是标签管理问题,不是窗口问题
- 如果有多个进程,且某些窗口只开了 1–2 个文件 → 这才是
Window: Merge All Windows的适用场景
为什么 Window: Merge All Windows 有时不生效?
这个命令只对同用户会话、同安装路径启动的窗口有效,容易卡在三个细节上:
- 从 Dock 或开始菜单反复点击图标新开的窗口,可能被系统视为新会话 → 改用命令行启动:
code --new-window /path/to/project - 双击文件(如
package.json)直接打开的窗口常以临时工作区方式启动,该命令对其无效 - 某些插件(如旧版 GitLens)会劫持窗口创建逻辑 → 临时禁用插件后重试,再逐个排查
- 命令必须在你希望其他窗口合入的那个“主窗口”中执行,且焦点要落在它上面
拖拽合并失败?检查这三处设置和动作
拖拽是最常用也最容易失败的方式,问题往往出在配置或区域误判:
-
window.dragAndDropTabs必须为true(默认开启),若被插件或手动改过,需在设置中搜该配置项并启用 - 拖拽目标必须是“编辑器区域边缘”,不是标题栏、侧边栏或标签栏空白处 → 正确位置是编辑器区左右/上下边缘,出现蓝色高亮框才松手
- macOS 用户注意:从 Dock 右键选 “New Window” 启动的窗口,与
Cmd+点击Dock 图标启动的行为不一致,后者更易被合并
比合并更稳的长期方案:用 .code-workspace 固化布局
靠拖拽或命令临时合并,下次重启又散开。真正省心的做法是用工作区文件固化结构:
- 在任意窗口中执行
File → Save Workspace As…,保存为my-project.code-workspace - 手动编辑该文件,在
folders数组里添加多个项目路径(支持相对或绝对路径) - 关闭所有窗口,直接双击打开这个
.code-workspace文件,所有文件夹自动加载到同一窗口的不同编辑器组中 - 后续每次打开它,连分组位置、已开文件、终端状态(如果启用了
terminal.integrated.persistentSessionEnabled)都能还原
最常被忽略的点:合并操作本身不保存状态,哪怕你花十分钟调好三列分屏+五个标签组,关掉窗口就清零;只有 .code-workspace 能真正固化这一切。











