真正独立窗口需用code --new-window命令启动并加载文件夹,禁用workbench.preferredNewWindowMode;.code-workspace用于跨项目聚合,须从空窗口创建且左下角显示[Workspace]才生效。

VSCode 多项目开发时,窗口混乱不是因为开得不够多,而是没分清「进程隔离」和「语义聚合」两种需求——前者要独立窗口,后者靠 .code-workspace 文件。
怎么真正打开多个独立窗口(不共享终端/调试/扩展状态)
关键不是“新建窗口”,而是避免被 VSCode 自动合并。默认点击菜单栏的 New Window 或按 Ctrl+Shift+N 有时仍会复用当前实例,尤其在 macOS 上点击 Dock 图标默认复用。
- 最可靠方式是命令行启动:
code --new-window /path/to/project-a,每个窗口必须通过File → Open Folder加载一个文件夹,不能只开零散文件——否则.vscode/settings.json不生效 - 检查设置里是否禁用了自动合并:
workbench.preferredNewWindowMode要设为default或直接删掉,否则新项目可能被塞进当前窗口的标签页 - 关掉一个窗口后另一个窗口 Git 状态突然变红?大概率是 Git 扩展在后台扫描了所有已打开窗口的路径,建议在每个窗口单独禁用
git.autoRepositoryDetection,或设为false后手动用Git: Add Repository指定路径
什么时候该用 .code-workspace 而不是多窗口
当你需要跨项目跳转定义、统一搜索、共享终端跑 docker-compose up,或者前端和后端共用一套类型定义时,.code-workspace 是唯一能保持语义一致性的方案。
- 必须从空窗口开始创建:状态栏显示
No folder opened时,用命令面板运行Workspaces: Create Workspace from Folder,再按住Ctrl多选根目录;先打开某个文件夹再添加其他,不会生成可保存的工作区 - 保存后左下角必须显示
[Workspace],资源管理器顶部列出多个独立文件夹名——这是唯一可信的启用标志 -
launch.json必须放在.code-workspace文件同级目录的.vscode/下,且每个configuration要显式写"cwd": "${workspaceFolder:backend}",其中backend必须和folders数组中对应项的路径最后一级完全一致
分屏编辑时终端和调试不串号的关键操作
左右分屏后左边起 npm run dev,右边点调试按钮结果断点打到另一个服务上——这不是 Bug,是没绑定终端和调试上下文。
- 终端要手动绑定到编辑器组:右键终端面板 →
Move Terminal to Editor Area,再拖进对应分屏;这样左边屏的终端只属于左边,不会被右边操作影响 - 调试前务必确认左下角环境选择器(
Run and Debug视图顶部)选中的是当前分屏所关注的服务配置,launch.json里多个configurations必须名字区分清楚,比如"name": "Frontend (Vite)"和"name": "Backend (Node.js)" - 避免在共享终端里执行
cd切目录后直接跑命令;要用Terminal → New Terminal (Split)按需创建带路径感知的新终端
窗口标题和快捷切换容易被忽略的细节
Alt+Tab 切窗口时一堆 “Visual Studio Code” 标题根本分不清哪个是 backend 哪个是 frontend,这不是界面问题,是配置缺失。
- 给每个项目窗口加标题前缀:在各自
.vscode/settings.json里加"window.title": "${dirty}${rootNameShort} — Backend",这样 Alt+Tab 时一眼能分清 - 分屏间切换别用
Ctrl+Tab(它只在当前列内切 Tab),改用Ctrl+1/Ctrl+2/Ctrl+3直接跳转对应列;窗口级切换坚持用系统原生快捷键——Windows 是Alt+Tab,macOS 是Cmd+` - 扩展行为可能跨窗口干扰,比如 Prettier 或 ESLint 在多个窗口同时激活会抢语言服务器;打开开发者工具(
Help → Toggle Developer Tools)看 Console 是否有警告,必要时在非主窗口禁用特定扩展


















