code --new-window 是打开真正独立窗口的唯一可靠方式,它强制启动新进程并加载指定文件夹,绕过vscode默认复用窗口逻辑;若需物理级隔离,还必须配合--user-data-dir参数指定不同用户数据路径。

code --new-window 是打开真正独立窗口的唯一可靠方式
VSCode 默认行为是复用已有窗口,哪怕你点菜单里的“新建窗口”,也可能只是新开个标签页。只有 code --new-window 命令能绕过所有自动合并逻辑,强制启动一个新进程并加载指定文件夹。
- Windows/Linux:终端进入项目目录后执行
code --new-window . - macOS:必须用命令行或 Dock 右键选 “New Window”,直接点击 Dock 图标会复用旧实例
- 路径必须是文件夹,不能是单个文件——否则
.vscode/settings.json和扩展行为不会按项目生效 - 如果已运行 VSCode 且设置了
workbench.preferredNewWindowMode为on,它会忽略--new-window,建议删掉该配置项或设为default
多个窗口 ≠ 真隔离:user-data-dir 才决定是否彻底独立
默认情况下,两个 code --new-window 窗口仍共享扩展状态、调试断点、终端历史和用户设置——因为它们共用同一套用户数据目录(User Data)。要物理级隔离,必须显式指定不同路径。
- Windows 示例:
code --user-data-dir="C:\vscode-data\project-a" --new-window "D:\projects\a" - macOS 示例:
code --user-data-dir="/Users/you/vscode-data/b" --new-window ~/projects/b - 路径必须不存在或为空,VSCode 才会初始化全新配置;若指向已有目录,会继承其中的插件启用状态和快捷键绑定
- 禁用
workbench.editor.enablePreview是全局设置,不影响窗口隔离,但能避免拖入文件后标签页一闪即逝
别信“Add Folder to Workspace”能开多窗口
这个操作只会把文件夹加进当前工作区,生成的是多根工作区(.code-workspace),所有项目共用同一套设置、终端和 Git 配置。它不是多窗口,也不是进程隔离方案。
- 适用场景:前后端同属一个系统,需要跨项目跳转、统一搜索、共用一个调试 launch.json
- 不适用场景:同时维护两个无关仓库(如公司项目 + 个人开源库)、不同 Node.js 版本、不同 ESLint 规则
- 错误信号:你在窗口 A 改了某个扩展的启用状态,窗口 B 里也跟着变了——说明你没用
--user-data-dir,也没关自动合并 - 保存工作区后双击
.code-workspace文件,打开的仍是单窗口,只是左侧资源管理器显示多个根目录
分屏终端和编辑器不是多窗口,但更轻量实用
多数人真正需要的不是“多个窗口”,而是“并行查看+操作”。这时分屏比开窗口更稳、更快、更省内存。
- 编辑器分屏:右键标签页 →
Split Right,或快捷键Ctrl+\(Win/Linux)/Cmd+\(macOS) - 终端分栏:先
Ctrl+Shift+`唤出终端,再Ctrl+Shift+5水平分栏,右键终端标签可选Split Terminal - 分屏终端各自运行独立 shell 进程,但 cwd 不一定继承——触发分栏时焦点在哪,新终端就从哪起始;想固定为项目根目录,得在
settings.json中配terminal.integrated.cwd - 关闭分栏终端面板 ≠ 终止进程,
npm run dev类服务仍在后台跑,需手动Ctrl+C
code --new-window 加 --user-data-dir 能做到,其余都是表象。很多人调了半天设置发现窗口还是互相影响,问题往往出在没意识到 VSCode 的“窗口”和“实例”、“工作区”、“用户数据”是四层不同的东西。











