vscode没有“合并窗口”功能,所谓合并实为统一多进程实例或使用工作区管理项目;判断依据是任务管理器中code.exe/electron进程数是否大于1,而非标签数量。

VSCode 没有“合并窗口”这个功能,所谓合并,其实是把多个独立进程的窗口内容收回到一个 VSCode 实例里,或者用工作区统一组织多个项目。直接拖标签、按快捷键、甚至命令面板里搜 Merge Windows 都不会生效——因为根本不存在这个命令。
怎么判断要不要合并?看进程,不是看标签数
很多人标签栏满了就以为要“合并窗口”,其实只是标签管理问题。真正需要合并的,是任务管理器里出现多个 Code.exe(Windows)或 Electron(macOS)进程:
- Windows:按
Ctrl+Shift+Esc打开任务管理器 → “进程”页签 → 查找多个Code.exe - macOS:打开“活动监视器” → 搜索
Electron→ 看实例数是否 >1 - 如果只有 1 个进程,但标签太多 → 关掉预览模式(
workbench.editor.enablePreview设为false),用Ctrl+Tab切换,或右键标签 → “关闭其他编辑器” - 如果有多个进程,且其中一些只开了 1–2 个文件 → 这才是该执行
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 用户注意:Dock 右键选 “New Window” 启动的窗口,比
Cmd+点击 Dock 图标启动的更难合并
真正可靠的长期方案:用 .code-workspace 固化布局
靠拖拽和命令临时合并,重启后大概率丢失。唯一能 100% 还原多项目、多分组、多文件状态的方式,是保存为工作区文件:
- 先在一个窗口中整理好所有文件夹(
File → Add Folder to Workspace…)和编辑器分组(Ctrl+\垂直拆分等) - 菜单栏 →
File → Save Workspace As…→ 保存为my-project.code-workspace - 关闭所有窗口,双击该文件,或运行
code my-project.code-workspace - 下次打开时,所有文件夹路径、编辑器组数量、每个组里的打开文件、甚至分组宽度比例都会还原
这个文件本质是 JSON,你可以手动编辑 folders 数组添加绝对或相对路径,但别漏掉 "workbench.editor.restoreViewState": true 这个关键配置,否则折叠状态、光标位置等细节会丢失。











