vscode 不支持窗口合并,所谓“合并窗口”实为用编辑器分组+拖拽组织多文件;正确做法是拖标签到目标窗口、用快捷键分屏、右键“移动到其他组”;对比文件需用“select for compare”,git冲突解决后必须手动 git add。

VSCode 没有“合并窗口”这个功能,所谓“合并窗口”是用户对多文件组织方式的误解——它实际指把多个独立窗口里的文件拖进同一个窗口,并用编辑器分组(Editor Groups)管理。
别搜 Merge Windows:VSCode 根本不支持窗口级合并
在命令面板(Ctrl+Shift+P 或 Cmd+Shift+P)里搜索 Merge Windows、Join Windows 或 Combine Windows 都不会出现对应命令。VSCode 的窗口(Window)是操作系统级隔离进程,彼此不共享状态,也无法“合并”。你真正需要的是文件归集和视图组织。
- 每个 VSCode 窗口对应一个独立工作区(Workspace),含各自打开的文件、终端、调试会话
- 试图“合并窗口”本质是想统一查看/对比/编辑多个文件,这靠编辑器分组 + 拖拽即可完成
- 若强行关闭一个窗口再拖文件过去,旧窗口的终端、调试器、未保存临时文件等全部丢失,不可逆
正确做法:用拖拽 + 分组替代“窗口合并”
最稳的操作路径是直接拖动文件标签(Tab)到目标窗口的编辑区(不是侧边栏、不是资源管理器),松手即新建标签页或加入现有分组。
- 垂直分屏:按
Ctrl+\(Win/Linux)或Cmd+\(Mac),当前编辑器立即一分为二;再把另一个窗口的文件拖进来 - 水平分屏:用
Ctrl+Shift+\(Win/Linux)或Cmd+Shift+\(Mac),适合上下对照逻辑(如 .ts 和 .spec.ts) - 右键文件标签 → “移动到其他组” → “新建组”,比快捷键更直观,尤其适合鼠标操作者
- 拖文件到已有分组边缘(顶部/底部/左侧/右侧),VSCode 会自动提示分割方向,松手即生效
对比文件别乱拖:Select for Compare 才是正解
拖一个文件标签到另一个文件标签上,VSCode 默认行为是“移动文件到该组”,**不是触发对比**。这是新手最高频的误操作,结果只是换来换去切标签,根本没看到 diff 视图。
- 正确对比流程:先点一下源文件使其成为活动文件 →
Ctrl+Shift+P输入File: Compare Active File With→ 选目标文件 - 或右键资源管理器中第一个文件 →
Select for Compare→ 再右键第二个文件 →Compare with Selected - 对比视图默认左侧为当前活动文件,右侧为被比较文件;若右侧是
node_modules下只读文件,仍可看差异但无法编辑 - 点了
Accept All Changes不等于保存:必须手动按Ctrl+S保存左侧文件,否则改动仅存在于当前编辑器缓存
Git 冲突时 Accept Both 是拼接,不是智能融合
Accept Both Changes 按钮只是把 Current 和 Incoming 两段代码上下堆叠,不做任何语义判断。它不会去重、排序,也不处理逻辑覆盖关系。
- 典型翻车:两边都有
import axios from 'axios',点完就重复导入;timeout = 5000和timeout = 10000并存,后者覆盖前者但业务意图丢失 - 真正需融合的逻辑(比如一边加参数校验、一边改返回结构),必须手动删掉所有
、<code>=======、>>>>> branch-name标记,再重写中间逻辑 - 光标必须落在冲突块内,顶部按钮才出现;用
Ctrl+Shift+P输入Go to Next Conflict比滚屏快得多 - 解决完必须手动运行
git add <file></file>,VSCode 不会替你更新暂存区状态
关键点在于:VSCode 的“窗口”不可合并,但“文件组织”极其灵活;所有你以为需要“合并窗口”才能完成的事,其实靠拖拽、分组、对比命令就能更干净地实现。最容易被忽略的是——Git 冲突解决后那一步 git add,它不是可选项,而是结束冲突状态的必要动作。











