最稳方式是资源管理器中Ctrl/Cmd多选两文件后右键“Compare Selected”,左侧为首个选中文件、右侧为第二个;双击打开再肉眼扫无效,必须主动触发比较动作。

VSCode 内置 Diff 工具能直接比对任意两个文件,无需插件、不依赖 Git,但必须“主动发起比较动作”,双击打开再肉眼扫是无效的。
怎么快速触发两个本地文件的对比
最稳的方式是资源管理器里 Ctrl(Windows/Linux)或 Cmd(macOS)多选两个文件,右键任一 → Compare Selected。VSCode 会自动以左侧为第一个选中文件、右侧为第二个打开 Diff 视图。
常见错误:先双击打开两个文件标签页,再右键想“比较当前编辑器”——这要求其中一个必须是“活动编辑器”(即焦点所在),否则菜单里压根不显示 Compare with Active Editor。
- 如果只打开一个文件,想跟磁盘上另一个未打开的文件比:用命令面板
Ctrl+Shift+P→ 输入File: Compare Active File With→ 选目标文件 - 如果两个文件都不在工作区(比如桌面两个日志):用终端执行
code --diff /path/to/file1 /path/to/file2,VSCode 会启动并加载 - 别用“Compare with Clipboard”来比两个文件——它只比当前文件和剪贴板内容,不是文件间比对
Diff 里明明改了空格却没高亮?
默认开启 ignoreTrimWhitespace,所有行首尾空格、制表符、换行符差异都会被忽略。这不是 bug,是设计上优先聚焦逻辑变更。
要看到缩进变化或末尾空格误删,点 Diff 右上角 ⋯ → 取消勾选 Ignore Trimmed Whitespace。此时空格显示为浅灰小点,\t 和 \n 差异也会标出。
- 这个开关只影响当前 Diff 标签页,不影响其他已打开的对比窗口
- 全局设置里改
diffEditor.ignoreTrimWhitespace会影响所有新打开的 Diff,但已有窗口不会刷新 - 如果文件编码不一致(比如一个 UTF-8 带 BOM,一个 GBK),Diff 可能直接显示
no differences或乱码,先统一编码再比
Git 历史 Diff 卡在 “Loading…” 怎么办
点击提交记录里的文件 → Compare with Previous 卡住,大概率不是 VSCode 问题,而是 Git 层面阻塞。
- 确认项目根目录存在
.git文件夹,且 VSCode 是从该目录或子目录启动的 - 检查文件是否被
.gitignore匹配——被忽略的文件不会出现在历史 Diff 列表中 - 大二进制文件(如图片、压缩包)只会显示
Binary files differ,无法展开文本差异 - 用终端跑
git show HEAD:src/utils.js验证能否正常输出内容;如果报错或乱码,说明 Git 读取失败,VSCode 就没法渲染
能不能直接在 Diff 里改右边的文件
默认不能。VSCode 的 Diff 编辑器是只读预览,点击右侧区域无光标、敲键盘无响应,强行操作会弹出 Cannot edit in read-only editor。
真要编辑,有两个路径:
- 快捷跳转:在 Diff 视图中聚焦右侧(Tab 切换或鼠标点),按
Ctrl+Enter(Windows/Linux)或Cmd+Enter(macOS),会新开标签页并定位到对应行 - 启用实验性功能:设置里搜
diffEditor.inlineEdit→ 勾选 → 重启 Diff 视图 → 右侧出现铅笔图标,点击即可编辑并保存回源文件
注意:inlineEdit 不支持 git stash 或 git log 中的 Diff,也不支持撤销单步修改(Ctrl+Z 无效),保存前得自己核对清楚。











