VSCode无原生窗口合并功能,所谓“合并”实为将文件从独立进程窗口拖入主窗口编辑器组,或通过.code-workspace统一管理多项目;“分离”则依赖Open in New Window命令或code --new-window参数。

VSCode 的“窗口”其实指的是操作系统级窗口,不是编辑器内的标签页或面板
VSCode 本身没有传统意义上的「窗口合并/分离」功能(比如像 JetBrains IDE 那样拖拽拆分出独立窗口再合并回去)。你看到的多个 VSCode 窗口,本质是多个独立进程——每个 code 启动实例对应一个 OS 窗口。所谓“合并”,其实是把文件从一个窗口拖进另一个窗口;所谓“分离”,是右键文件标签选择「Open in New Window」或用命令 File: Open Folder in New Window。
如何把一个文件或文件夹从当前窗口“分离”到新窗口
常见场景:正在调试主项目,想单独打开某个子模块做对比;或误开了大仓库,想隔离工作区避免卡顿。
- 右键编辑器中的任意文件标签 → 选
Open in New Window - 右键资源管理器里的文件夹 → 选
Open in New Window(会新开一个窗口并加载该文件夹为根) - 命令面板(
Ctrl+Shift+P/Cmd+Shift+P)→ 输入并执行File: Open Folder in New Window,然后选择路径 - 终端中直接运行:
code --new-window /path/to/folder(Linux/macOS)或code --new-window "C:\path\to\folder"(Windows)
注意:--new-window 是关键参数,缺了它默认会在已有窗口中新开标签页;若已开启 "window.openFoldersInNewWindow": "on" 设置,则资源管理器中双击文件夹也会自动分离。
如何把外部文件“合并”进当前窗口(而不是总弹新窗口)
典型问题:双击系统文件管理器里的 .js 文件,总是打开新 VSCode 窗口,想让它复用当前窗口。
- 确保未启用
"window.openFilesInNewWindow": "on"(检查设置里搜该配置项,设为off或default) - macOS 用户需额外注意:在 Finder 中右键 →
Get Info→ 取消勾选Open using Rosetta(如果用了 Apple Silicon),否则可能绕过 VSCode 的窗口复用逻辑 - Windows 下若通过右键菜单「Open with Code」总开新窗,可能是注册表被改写;可运行
code --reuse-window手动指定复用,或重装 Shell 命令支持:code --install-extension ms-vscode-remote.remote-wsl不相关,真正要用的是code --register-server(仅旧版需要);新版推荐在 VSCode 内执行命令Developer: Install 'code' command in PATH
验证是否生效:终端执行 code --reuse-window ./test.js,应出现在当前窗口的标签页中,而非新窗口。
多窗口协作时容易忽略的配置冲突点
多个 VSCode 窗口共存时,它们共享全局设置(settings.json),但工作区设置(.vscode/settings.json)只对所在窗口生效。容易踩坑的地方:
- 插件启用状态是全局的,但某些插件(如
GitLens、ESLint)会按窗口绑定工作区,切换窗口后 lint 结果可能延迟或不触发 - 调试会话彼此隔离,但若两个窗口都监听
localhost:3000,浏览器缓存或端口占用会导致热更新异常 -
files.autoSave默认是全局设置,但如果你在一个窗口关了它,另一个窗口仍受原值影响——因为没写进当前工作区设置 - 搜索(
Ctrl+Shift+F)默认只搜当前窗口打开的文件夹;跨窗口搜索不存在,得手动切窗口或整合到单个工作区
真正需要“合并窗口”的用户,往往实际诉求是统一工作区管理——这时候应该用 Multi-root Workspace(多根工作区),把多个文件夹加进同一个 .code-workspace 文件,比硬凑窗口更稳定。


















