Partial Diff插件支持选中任意两段代码(含跨文件、未保存内容)直接比对,基于内存快照保留原始格式,无需临时文件;需用Cmd/Ctrl分两次独立选中,边界需干净,差异高亮按语义关注逻辑变更。

直接用 Partial Diff 插件,别折腾右键菜单或命令面板里找“Compare”——它专为这种场景设计,两段代码选中即比,不依赖文件是否保存、不挑语言、不卡在“未启用工作区”这类限制上。
为什么不用 VSCode 自带 File: Compare Active File With
自带功能只支持整个文件或已打开的完整文件对比,无法聚焦到两个函数体。你得先把函数复制出来另存为临时文件,再比——多一步就容易出错,比如漏复制注释、改了缩进、忘了关 Prettier 自动格式化。而 Partial Diff 拿的是内存快照,原样提取,连空行和制表符都保留。
选中两个函数时必须注意的三件事
- 第一个函数选中后,**不要松开鼠标或按 Esc**,否则第二次选中会覆盖前一次(VSCode 默认单选)
- 第二个函数必须用
Cmd(macOS)或Ctrl(Windows/Linux)+ 鼠标拖选,不能靠双击或Shift+↑扩展——后者会合并成一个连续选区,插件识别不了“两段” - 函数边界要干净:如果函数末尾有空行或注释紧贴大括号,建议手动删掉再选,否则差异里会混入无关换行或缩进变化
比对结果里哪些高亮真该关注
Partial Diff 默认用颜色区分变更类型,但实际调试函数时,重点不是“哪里变了”,而是“为什么逻辑行为不同”:
- 绿色行:右侧多出来的语句——检查是否漏了 return、少写了 await、或者新增了未处理的异常分支
- 红色行:左侧删掉的语句——确认是不是有意移除了副作用(如 console.log、埋点调用),还是误删了关键判断条件
-
黄色行:同一位置内容不同——优先看变量名、操作符(
==vs===)、布尔取反(!xvsx === false)这类易忽略的语义差异
如果整块逻辑被重写(比如从 if/else 改成 switch),插件会把整段标黄,这时得手动对照参数传递路径和返回值处理,不能只信颜色。
跨文件比函数时最常踩的坑
你在一个 utils.ts 里选了旧版 formatDate,又在 api.ts 里选了新版,结果比对窗口里右边全是乱码或空——大概率是第二个文件没真正“激活”过。
- 切换到目标文件标签页后,**必须点一下编辑区任意位置**(哪怕只是光标闪一下),否则 VSCode 不认为它是“当前上下文”
- 如果目标函数在未保存的临时文件(
Untitled-1)里,Partial Diff能比,但部分语法高亮可能失效;建议先Cmd+S保存为 .ts/.js 再比 - 别指望插件自动推断函数签名——它比的是纯文本,所以
function foo(a: string)和function foo(a)会被当成完全不同的开头,哪怕 TypeScript 编译后一样
真正麻烦的不是怎么比,而是比完发现差异在类型声明或 JSDoc 注释里——这些不影响运行,但可能暴露接口契约变更,得人工判断是否要同步更新调用方。


















