vscode无“合并目录窗口”功能,本质是区分进程级窗口(多code.exe/electron实例)与工作区级目录(多根.workspace);需先通过任务管理器确认多进程,再执行window: merge all windows命令或创建.code-workspace文件固化布局。

VSCode 没有“合并目录窗口”这回事——你看到的多个目录,大概率根本不是多个窗口,而是多个独立工作区或多个进程实例。关键先分清:是标签页太多?还是真有多个 Code.exe/Electron 进程?
怎么确认自己是不是真开了多个窗口进程
很多人以为左侧资源管理器里显示了几个文件夹,就是“多个窗口”,其实那是多根工作区(.code-workspace)的正常表现;真正要合并的,是任务管理器里并存的多个 VSCode 进程:
- Windows:按
Ctrl+Shift+Esc打开任务管理器 → 切到“进程”页签 → 查看是否有多个Code.exe - macOS:打开“活动监视器” → 搜索
Electron→ 看实例数是否 >1 - 如果只有 1 个进程,但资源管理器里有多个根目录 → 这是多根工作区,不用“合并”,该检查
folders配置是否写错路径 - 如果多个进程,且每个窗口只开了 1 个文件夹 → 这才是需要执行
Window: Merge All Windows的场景
Window: Merge All Windows 命令为什么没反应
这个命令不是万能粘合剂,它只对“同用户会话、同安装路径启动”的窗口生效。常见失效原因:
- 从 Dock / 开始菜单反复点击图标新开的窗口,系统可能分配为新会话 → 改用命令行启动:
code --new-window /path/to/project - 双击某个文件(如
package.json)直接打开的窗口,常以临时工作区方式启动 → 此类窗口无法被合并 - 某些插件(如旧版 GitLens 或 Project Manager)会拦截窗口创建逻辑 → 临时禁用插件后重试命令
- 命令必须在你希望“作为主窗口接收其他内容”的那个窗口中执行,且该窗口要有焦点
拖拽文件进目标窗口时总失败,卡在哪了
拖拽是最常用也最容易误操作的方式。失败通常不是手速问题,而是目标区域或配置不对:
-
window.dragAndDropTabs必须为true(默认开启),若被插件覆盖或手动关过,需在设置中搜索并启用 - 拖拽目标必须是“编辑器区域边缘”,不是标题栏、侧边栏或标签栏空白处 → 正确位置是编辑器左右/上下边缘,出现蓝色高亮框才能松手
- 把文件标签拖到另一个窗口的资源管理器区域 → 只触发预览,不会新建标签页
- 拖到已有标签页上 → 默认是移动到该组,不是新建分组;想并排看,请先按
Ctrl+\(Win/Linux)或Cmd+\(Mac)垂直分割,再拖入
更稳的长期方案:用 .code-workspace 固化多目录结构
靠拖拽和命令临时合并,下次重启又散了。真正解决“多个目录窗口”需求的,是主动创建多根工作区:
- 关闭所有 VSCode 窗口,用命令行执行:
code --new-window启动一个干净窗口 - 菜单选
File → Save Workspace As…,保存为my-projects.code-workspace - 用编辑器打开该文件,手动编辑
folders数组,例如:
{
"folders": [
{ "path": "backend" },
{ "path": "../frontend" },
{ "path": "/absolute/path/to/shared" }
],
"settings": { "editor.tabSize": 2 }
}
保存后直接双击打开这个 .code-workspace 文件,所有目录就稳定聚合在一个窗口里了。注意:路径是相对于 workspace 文件位置的相对路径,跨平台协作时避免用绝对路径。
真正的难点不在操作步骤,而在于区分“进程级窗口”和“工作区级目录”——混淆这两者,所有合并动作都会南辕北辙。











