VSCode没有真正合并窗口功能,所谓合并是将多进程窗口内容整合到同一实例;需先通过任务管理器确认是否真有多个Code.exe/Electron进程,若仅1个进程则属标签管理问题而非窗口合并需求。

怎么判断是否真需要“合并窗口”
VSCode没有真正的“合并窗口”功能,所谓合并,其实是把多个独立进程的窗口内容收回到同一个 VSCode 实例里。先确认你是不是真的有多个进程:Code.exe(Windows)或 Electron(macOS)——打开任务管理器或活动监视器,看实例数是否大于 1。如果只有 1 个进程,但标签栏塞满、切换困难,那不是窗口问题,是标签管理或分组问题,不该走“合并”路线。
Window: Merge All Windows 命令为什么有时不生效
这个命令只对“同用户会话、同一安装路径启动”的窗口有效,容易踩三个坑:
- 从 Dock / 开始菜单反复点击图标新开的窗口,可能被系统视为新会话 → 改用命令行启动:
code --new-window /path/to/project - 双击文件(如
package.json)直接打开的窗口常以临时工作区启动,该命令对其无效 - 某些插件(如旧版 GitLens、Project Manager)会劫持窗口创建逻辑 → 临时禁用插件后重试
- 命令必须在你希望保留为主窗口的那个实例中执行,且焦点要落在它上面
拖拽文件比拖拽窗口更可靠
别试图把整个窗口拖到另一个窗口顶部——成功率低,且 VSCode 不鼓励这种操作。真正稳的操作是:
- 直接拖拽源窗口中的文件标签,松手位置必须是目标窗口的编辑区域(不是侧边栏、不是标题栏),会自动新建标签页
- 想并排查看?按
Ctrl+\(Win/Linux)或Cmd+\(macOS)垂直分割当前编辑器,再拖文件进去 - 右键文件标签 → “移动到其他组” → “新建组”,比快捷键更直观,尤其适合鼠标操作习惯者
- 拖一个文件到另一个文件标签上,默认是移动而非对比,这点新手极易误判
用 .code-workspace 固化多项目布局才是长期解
临时合并只是救急,真正稳定高效的方式是放弃多窗口,改用多根工作区:
- 在任一窗口执行
File → Save Workspace As…,保存为my-projects.code-workspace - 编辑该 JSON 文件,在
"folders"数组中添加多个"path",支持相对路径(如"../backend")或绝对路径(如"/Users/name/project") - 关闭所有窗口,双击该
.code-workspace文件重新打开,所有项目即统一加载进单个窗口 - 注意:路径是相对于
.code-workspace文件所在位置的;跨平台协作时慎用绝对路径
复杂点在于,一旦用了多根工作区,所有项目共享同一套设置和扩展状态——如果你需要严格隔离(比如不同项目的 ESLint 规则冲突),那反而得坚持多窗口 + code --new-window 启动。


















