Ctrl+K Ctrl+D 用于对比当前未保存编辑内容与磁盘原文件,需已打开并保存过的文件且焦点在编辑器中;资源管理器多选后右键 Compare Files 可跨路径比任意两文件;命令面板执行 File: Compare Active File With 更灵活但要求活动文件存在;diff 前须统一编码和换行符,否则结果不可信。

Ctrl+K Ctrl+D 是对比「当前编辑内容 vs 磁盘文件」的快捷键
这个组合键只在你已打开一个文件、且它有保存过的历史版本时生效。按下后,左侧显示磁盘上原内容,右侧显示你当前未保存的修改——顶部会明确标出 UNSAVED CHANGES。
常见错误现象:No file to compare with 报错,说明你还没打开任何文件,或焦点不在编辑器里(比如光标在终端、设置页、搜索框中);也可能是该文件从未保存过(Untitled-1 类型),VSCode 拒绝识别。
- 必须先用
Ctrl+O或双击打开文件,并确保标签页高亮(即焦点落在编辑区) - 快捷键是两步连按:先按住
Ctrl+K松开,再按Ctrl+D(不是同时按) - 它不支持跨文件对比,只比“自己 vs 自己的磁盘版”
资源管理器多选 + 右键 Compare Files 才能真正比任意两个文件
这是唯一不依赖打开状态、不挑路径、不卡工作区范围的操作方式。哪怕两个文件分别在桌面和 C:\temp\ 里,只要能在资源管理器里看到,就能比。
容易踩的坑:右键菜单里没有 Compare Files 选项,大概率是你没按住 Ctrl(Windows/Linux)或 Cmd(macOS)就点了第二个文件——结果只选中了一个,多选失败。
- 在资源管理器中按住
Ctrl/Cmd,依次点击两个文件(先点的在左,后点的在右) - 右键任一被选中的文件 → 选
Compare Files(注意不是Compare with Selected,后者是旧版残留名) - 路径含中文、空格或
%20时可能静默失败,可临时复制到~/tmp/或C:\temp\再试
命令面板输入 File: Compare Active File With 更灵活但有硬前提
适合一个文件已打开、另一个在别处(比如邮件附件解压出的 JSON)。它不要求目标文件在当前工作区,但要求“活动编辑器”里正聚焦着基准文件。
如果你搜不到这个命令,99% 是因为当前没有活动文件,或者 VSCode 没识别到编辑器焦点——比如你刚从终端切回来,光标还在终端里。
- 先打开第一个文件,确保它的标签页是高亮的(光标在其内容中)
- 按
Ctrl+Shift+P(Win/Linux)或Cmd+Shift+P(macOS)呼出命令面板 - 输入
File: Compare Active File With回车,在弹出的选择器中定位第二个文件 - 目标文件可以是任意本地路径,甚至跨磁盘,但必须已保存(不能是
Untitled-1)
Diff 视图里空格和换行差异不显示?默认 ignoreTrimWhitespace 在作祟
VSCode 默认忽略行首尾空格、制表符、换行符差异,这不是 bug,是设计上优先过滤格式噪音。但当你检查 Prettier 输出、缩进混用、或末尾空格误删时,这就成了盲区。
右下角状态栏显示的编码(如 UTF-8)和换行符(CRLF 或 LF)不一致,也会导致大量假差异——尤其在 JSON/YAML 配置中高频出现。
- 点 diff 视图右上角
⋯→ 取消勾选Ignore Trimmed Whitespace,空格会变成浅灰色小点,\t和\n差异也会标出 - 点右下角编码标识 →
Reopen with Encoding→ 统一为UTF-8 - 点右下角换行符标识 →
Change End of Line Sequence→ 全部设为LF(推荐)或全部CRLF


















