VSCode 默认不自动合并多文件夹到同一窗口,需用 code --add 命令或拖拽至资源管理器添加;空窗口无法 --add;拖拽至标题栏会新建窗口,应拖至侧边栏;常用组合可建 .code-workspace 文件实现多根工作区。

VSCode 里打开多个文件夹,为什么不能自动合并到一个窗口?
VSCode 默认行为是:每次用 File > Open Folder... 打开新文件夹时,如果当前没有窗口,会新建一个窗口;如果已有窗口,**不会自动合并**——而是新开一个独立窗口。这容易造成桌面混乱,尤其当你在项目子目录(如 frontend/ 和 backend/)间频繁切换时。
用 code --add 命令把文件夹加进当前窗口
这是最直接、跨平台(macOS / Windows / Linux)且无需插件的方案。关键不是“打开”,而是“添加”:
- 确保 VSCode 已运行(至少一个窗口存在)
- 在终端中进入目标文件夹,执行:
code --add .
- 或指定路径:
code --add /path/to/backend
-
--add不会新建窗口,而是作为新工作区根添加到当前窗口的资源管理器中(显示为并列的文件夹图标) - 注意:如果当前窗口是空的(没打开任何文件夹),
--add会失败;先打开一个文件夹,再用--add
拖拽文件夹到已有 VSCode 窗口标题栏无效?试试拖到侧边栏
很多人试过把文件夹拖到窗口顶部标题栏,结果弹出新窗口——这是 VSCode 的默认拖拽策略。真正生效的方式是:
- 把文件夹拖到左侧资源管理器(Explorer)的空白区域,或已存在的文件夹图标上
- 松手后,该文件夹会作为新根目录加入当前工作区(类似
--add效果) - 如果拖到编辑器区域或标签页上,VSCode 会尝试打开其中的文件,而不是添加文件夹
- macOS 上需关闭“系统偏好设置 > 隐私与安全性 > 完全磁盘访问”中 VSCode 的权限,否则拖拽可能无响应
用多根工作区(Multi-root Workspace)保存常用组合
如果你经常同时操作固定几个目录(比如 client/、server/、shared-lib/),手动 --add 太重复。这时应该创建一个 .code-workspace 文件:
- 在任意位置新建 JSON 文件,如
my-project.code-workspace - 内容示例:
{ "folders": [ { "path": "client" }, { "path": "server" }, { "path": "../shared-lib" } ], "settings": { "editor.tabSize": 2 } } - 用 VSCode 打开这个
.code-workspace文件,所有路径将一次性加载为多根工作区 - 后续双击该文件,或运行
code my-project.code-workspace,即可复现完整结构 - 注意:路径是相对于
.code-workspace文件所在位置的,不是相对于当前终端路径
多根工作区虽然灵活,但调试配置、扩展启用范围、任务定义都按根目录隔离,有些插件(比如某些语言服务器)对跨根跳转支持不一致——这点常被忽略,直到 Ctrl+Click 跳不到另一个文件夹里的定义才反应过来。


















