vscode无“合并窗口”快捷键,需拖拽文件至目标窗口编辑区;分屏用ctrl+\或cmd+\;对比文件须用命令面板或右键“select for compare”;git冲突解决后需手动保存并git add。

VSCode没有“合并窗口”快捷键,只有“移动文件+分组”操作
VSCode 本身不提供一键合并多个独立窗口的功能。所谓“合并”,实际是把一个窗口里的文件拖进另一个窗口,并用编辑器分组组织起来。别在命令面板里搜 Merge Windows 或 Join Windows——根本不存在。
- 最稳的方式:直接拖拽文件标签到目标窗口的编辑区(不是侧边栏),松手即新建标签页
- 想并排看?按
Ctrl+\(Win/Linux)或Cmd+\(Mac)垂直分割当前编辑器,再拖文件进去 - 水平分割用
Ctrl+Shift+\(Win/Linux)或Cmd+Shift+\(Mac),适合上下对照代码逻辑 - 右键文件标签 → “移动到其他组” → “新建组”,比快捷键更直观,尤其适合鼠标操作习惯者
对比两个文件时,别用拖拽打开 diff 视图
拖一个文件到另一个文件标签上,VSCode 默认会把它移到那个标签页所在组,而不是触发对比。这是新手最常踩的坑,结果白忙活半天还在切标签。
- 正确做法:先激活一个文件(点一下编辑器),再按
Ctrl+Shift+P(Win/Linux)或Cmd+Shift+P(Mac),输入File: Compare Active File With,选目标文件 - 右键资源管理器中第一个文件 →
Select for Compare,再右键第二个 →Compare with Selected - 对比视图默认左侧是当前活动文件,右侧是被比较文件;右侧若为只读(如
node_modules中的文件),仍可看差异但无法编辑 - 点了
Accept All Changes不等于保存:必须手动按Ctrl+S保存左侧文件,否则改动只是临时复制过去
Git 冲突时 Accept Both Changes 是拼接,不是融合
VSCode 的 Accept Both Changes 按钮只是把 Current 和 Incoming 两段代码上下堆叠,不做任何语义判断。它不会帮你去重、排序或处理逻辑冲突。
- 典型翻车场景:
import axios from 'axios'出现在两边,点完就重复导入;config.timeout = 5000和config.timeout = 10000并存,后者覆盖前者但意图丢失 - 真正需要融合的地方(比如一边加校验、一边改返回结构),必须手动删掉所有
、<code>=======、>>>>>> branch-name标记,再编辑中间逻辑 - 光标必须落在冲突块内,顶部按钮才出现;用
Ctrl+Shift+P输入Go to Next Conflict比滚屏快得多 - 解决完必须手动运行
git add <file></file>,VSCode 不会替你更新暂存区状态
大文件或非 UTF-8 编码时,diff 可能直接失效
VSCode 的 diff 引擎对编码和体积有硬性限制。遇到打不开、空白、或报错 Unable to open 'xxx': Cannot read property 'length' of undefined,大概率是这两类问题。
- 文件 > 10MB:VSCode 会自动降级为分块对比,响应变慢;> 50MB 基本拒绝加载,建议改用命令行
diff -u a.js b.js或专用工具 - 含 GBK/Big5 中文注释的文件:合并编辑器可能直接拒载,需先用
iconv或 Notepad++ 转成 UTF-8 再操作 - 空格/换行符干扰太多?点击 diff 视图右上角的
⋯→ 勾选Ignore Trim Whitespace,避免格式差异掩盖真实逻辑变更 - JSON/YAML 等结构化文件冲突,
Accept Both Changes极易破坏语法,务必在保存前用格式化命令Shift+Alt+F校验











