最稳的文件对比方式是通过命令面板输入“File: Compare Active File With...”并选择另一文件,需先打开且聚焦一个文件;拖拽仅支持从EXPLORER面板拖至标签栏,非代码区;中文乱码或错位需统一编码与换行符;Diff视图只读,关闭后恢复原布局。

用命令面板快速打开文件对比
VS Code 自带的文件对比功能不依赖插件,最稳的方式是通过命令面板触发。按 Ctrl+Shift+P(Windows/Linux)或 Cmd+Shift+P(macOS),输入 File: Compare Active File With...,回车后选中另一个文件即可。
- 必须先打开其中一个文件并保持焦点,否则命令不可用
- 如果两个文件都已打开,右键任一编辑器标签页,选择
Compare with Saved是快捷替代,但只适用于未保存修改的场景 - 直接拖拽第二个文件到第一个文件的编辑器区域不会触发 Diff,这是新手常踩的误区
拖拽方式仅限“资源管理器内拖拽”
想省键盘操作?可以拖拽,但有严格前提:必须从左侧 EXPLORER 面板里把第二个文件拖到第一个已打开文件的编辑器标签栏上(不是代码区、不是空白处),松手后自动进入对比视图。
- 拖错位置(比如拖进代码区)会直接替换当前文件内容,不是对比
- 从外部文件管理器(如 Finder / 文件资源管理器)拖入,只会打开新标签页,不触发 Diff
- 对比视图中,左侧为“原文件”,右侧为“目标文件”,顺序不可反向调整
对比时中文乱码或空行错位怎么办
常见现象是两文件明明内容一致,却显示大量差异标记,尤其含中文、制表符或混合换行符(\r\n vs \n)时。
- 先检查右下角状态栏:确认两个文件的
UTF-8编码和CRLF/LF换行符设置是否一致,不一致就点开切换 - 不要手动删空行来“对齐”——VS Code 的 Diff 是基于行哈希比对,空行本身也是有效行
- 若某文件被格式化过(如 Prettier 插件自动加空行),建议先关掉格式化再对比,否则差异全是噪音
关闭 Diff 视图后如何回到原始编辑状态
Diff 视图是只读的,不能直接编辑。想改内容,得回到原始文件。
- 点击对比窗口顶部的
Close Diff Editor(×)按钮,会退回到打开 Diff 前的编辑器布局 - 如果误点了
Revert Changes,它只对“当前打开的副本”生效,不会影响磁盘文件;但若你已在原文件里做了修改,这个操作会丢弃那些改动 - 想保留对比结果作参考?右键 Diff 标签页 →
Save As可导出 HTML 格式报告,但注意:导出的是快照,不随源文件更新
对比逻辑本身很简单,但 VS Code 把“激活上下文”卡得很死——哪个文件在焦点、从哪拖、编码是否同步,三者错一个,Diff 就变成玄学。真遇到对比不生效,先看状态栏那两个小字。


















