vscode原生支持双文件对比,可通过命令面板(ctrl+shift+p输入“file: compare active file with...”)或资源管理器多选右键“compare files”触发;需确保至少一文件已打开且同工作区,对比可编辑、支持同步滚动,大文件或二进制文件有大小及格式限制。

用命令面板快速打开文件对比
VSCode 原生支持双文件对比,不需要插件。最直接的方式是通过命令面板触发:Ctrl+Shift+P(Windows/Linux)或 Cmd+Shift+P(macOS),输入 File: Compare Active File With...,回车后选中另一个文件即可。
注意:必须先打开其中一个文件并保持为活动标签页,否则命令不可用;如果两个文件都未打开,该命令会灰掉。
- 对比结果以左右分栏展示,左侧是当前活动文件,右侧是被选中的文件
- 不支持直接拖拽两个文件到窗口触发对比(常见误解)
- 若文件编码不同(如一个 UTF-8 BOM,一个 UTF-8 无 BOM),可能误报大量“差异”,建议先统一保存编码
右键菜单里隐藏的对比入口
在资源管理器(Explorer)中,按住 Ctrl(Windows/Linux)或 Cmd(macOS)多选两个文件,然后右键 → 选择 Compare Files。
这个操作比命令面板更快,但容易被忽略——它只在「多选且至少一个是已打开的文件」或「两个都是未打开的文件」时才出现。如果其中一个已打开且是活动页,右键菜单反而不会显示该选项。
- 两个文件路径需在同一工作区(workspace)内,跨窗口无法触发
- 不支持比较文件夹,也不支持比较未保存的临时文件(如
Untitled-1) - 对比视图中点击顶部的
>图标可切换左右顺序,避免看反基准文件
diff 编辑器里的关键操作和陷阱
对比打开后进入的是 VSCode 的内置 diff editor,它不是只读预览,而是可编辑的——改左边会影响原文件,改右边则影响被对比文件。
很多人以为只是“看看区别”,结果手一滑保存了右边,把错误内容覆盖过去。尤其当两个文件名相似(如 config.json 和 config.backup.json)时极易出错。
-
Ctrl+S默认只保存当前焦点侧(高亮边框那一侧),不是同时保存两边 - 想复制某处差异到另一边?用鼠标选中 →
Ctrl+C→ 点击另一侧对应位置 →Ctrl+V,别用右键菜单粘贴(有时会失效) - 滚动不同步?检查右上角是否启用了
Sync Scrolling(链条图标),默认开启,关掉后可独立滚动
大文件或二进制文件对比失败怎么办
VSCode 对单个文件超过 ~50MB 会自动禁用 diff 渲染,并提示 File is too large to be opened;对图片、PDF、.exe 等二进制文件,默认只显示 Binary files differ,不展示具体内容。
这不是 bug,是设计限制。想看二进制差异,得换工具;想强行对比大文本,只能改设置,但风险明确:
- 修改
"diffEditor.maxFileSize"设置(单位字节),比如设为100000000(100MB),但可能导致编辑器卡顿甚至崩溃 - 对二进制文件,可用终端命令辅助:
xxd file1.bin | head -20和xxd file2.bin | head -20快速扫一眼头几十行十六进制 - 真要深度比对二进制,老实用
cmp -l file1.bin file2.bin | head -20或专业工具如WinMerge/DiffMerge
真正麻烦的从来不是怎么点开对比,而是没看清哪边是源、哪边是目标,又急着保存——多看一眼顶部路径栏,比啥都管用。











