VSCode窗口合并并非真正合并进程,而是将多个独立窗口内容整合到单个窗口的编辑器组中;需通过拖拽文件、使用Window: Merge All Windows命令(仅对同会话窗口有效)、或创建.code-workspace工作区实现。

VSCode 窗口合并是什么意思
VSCode 本身不支持传统意义上的“多窗口合并为一个窗口内多个标签页”(像浏览器那样),它没有 mergeWindows 或 joinWorkspaces 这类设置。所谓“窗口合并”,用户实际想解决的通常是以下两种情况之一:
• 多个独立 VSCode 窗口(进程)打开,希望它们统一到单个窗口的多个编辑器标签中;
• 新打开文件/文件夹时,总是弹出新窗口,而不是复用已有窗口。
阻止新窗口弹出:改 openFoldersInNewWindow
这是最常见、也最可控的入口。默认情况下,VSCode 在某些系统(尤其是 macOS)或通过双击文件/拖入 Dock 打开文件夹时,会强制新建窗口。可通过设置禁用:
- 打开设置(
Ctrl+,或Cmd+,),搜索openFoldersInNewWindow - 将值改为
off(推荐)或default(部分场景仍可能新建) - 该设置对应配置项是
"window.openFoldersInNewWindow": "off" - 注意:此设置只影响「打开文件夹」行为,对单独打开文件(如
.js)无效
让文件在已有窗口打开:配 files.associations + 命令行参数
双击未关联的文件类型(如 .env、.yml)常触发新窗口。要强制复用当前窗口,需两步配合:
- 确保 VSCode 是系统默认编辑器(macOS:右键 → “显示简介” → “打开方式”;Windows:默认应用设置)
- 在终端中用
code -r(-r即--reuse-window)打开文件,例如:code -r .env
- 若想双击也生效,macOS 可改用 Automator 创建“运行 Shell 脚本”快捷操作,调用
code -r "$1";Windows 可修改注册表中shell\open\command的值,把"%1"替换为-r "%1" -
files.associations本身不控制窗口行为,但能避免因未知文件类型触发降级逻辑导致新建窗口
已存在多个窗口?只能手动拖拽或关掉
VSCode 没有 API 或命令把已有独立窗口的编辑器标签“迁移”到另一个窗口里。你看到的每个窗口都是独立进程,彼此内存隔离:
- 无法用设置、插件或命令行把窗口 A 的
index.ts标签拖进窗口 B - 唯一可靠做法:在目标窗口中重新执行
File → Open Recent或用Ctrl+P快速打开相同文件 - 如果窗口太多,建议用任务管理器确认是否真有多个
Code Helper进程残留——有时崩溃后窗口关闭但进程未退出,会干扰新窗口复用逻辑
真正的“合并”只发生在启动阶段;运行时的窗口是刚性的。这点和 Electron 应用的设计模型强相关,绕不开。


















