partial diff插件非vscode内置功能,需手动安装ryu1kn开发的同名扩展;必须先选第一段文本,再按ctrl(windows/linux)或cmd(macos)加选同一标签页内不重叠的第二段文本,右键才显示compare with selection选项。

Partial Diff 插件不是 VSCode 内置功能,装完就能用——但必须按对方式选中两段文本,否则右键菜单不出现、命令面板搜不到、快捷键无反应。它不依赖文件是否保存,所有比对都在内存里完成,但对选区创建逻辑极其敏感。
怎么装 Partial Diff 插件才真正生效
插件作者是 ryu1kn,名字就叫 Partial Diff,别搜错。安装后无需重启,但有两点容易被忽略:
- Windows/Linux 用户要确认快捷键是
Ctrl+Shift+P(不是Cmd);macOS 用户才是Cmd+Shift+P - 某些企业版或 Snap 安装的 VSCode 可能裁剪了扩展 API,如果装完没反应,换官方 .zip 或 .dmg 安装包重试
- 插件默认不激活所有语言模式,比如在
.vue的<template></template>区域右键可能没选项——进设置搜partialDiff.enableForLanguages,手动加vue或html
为什么 Compare Selected Text 总是灰色或没反应
这个命令不是“点了就出”,而是严格依赖两个独立选区的创建顺序和位置。常见失效原因:
- 两个选区必须在同一标签页内;跨文件、跨终端、跨输出面板都不支持
- 不能用
Shift+方向键扩展选区,必须用鼠标拖选 +Ctrl/Cmd加选第二段 - 两段不能重叠,哪怕只重叠一个字符,菜单项直接变灰
- 选区含 BOM、零宽空格、混合换行符(
\r\n和\n并存)时,命令会静默失败,不报错也不弹窗
比对 HTML 标签块时整块标红,真是内容不同吗
大概率不是。HTML 片段比对最常踩的坑是编码与格式干扰:
- 右下角状态栏看编码:两边都得是
UTF-8(不是UTF-8 with BOM),换行符统一为LF或CRLF - Prettier/ESLint 自动格式化开着?关掉再比——属性顺序、引号风格、换行缩进都会被算作差异
- 想检查是否误删了空格或制表符?右键 Diff 视图 →
Toggle Ignore Whitespace - 浏览器 DevTools 复制的 HTML 常带不可见字符,建议先粘贴到纯文本编辑器(如系统备忘录)清理一遍再复制
剪贴板比对比选中更稳,但要注意这三点
从外部复制 HTML 或 JSON 片段来比,用 Partial Diff: Compare with Clipboard 比右键选中更可靠,因为绕过了选区解析:
- 必须先复制目标内容,再在 VSCode 里选中本地代码段,最后执行命令——顺序反了会把本地内容当剪贴板内容
- 剪贴板为空时命令会报错
Clipboard is empty,可先在终端执行pbpaste | wc -c(macOS)或Get-Clipboard | Measure-Object(PowerShell)验证 - 剪贴板内容不会写入任何文件,关闭 Diff 标签页即释放,但如果你点了
Accept Changes,右侧内容会覆盖左侧文件
真正卡住人的往往不是插件本身,而是你忘了第二段必须按住 Ctrl 或 Cmd 再选——这个操作没有视觉反馈,手滑一次就得重来;而一旦选区建错,整个流程就断在第一步,后面所有设置都白调。











