工具介绍
Diff(差异对比)工具比较两段文本,找出把一段变成另一段所需的最小改动集合。Git 等版本控制系统就是用它展示代码变更的,同样适合对比配置文件、合同、文章或任何东西的两个版本。
本工具按行对比,使用与经典 diff 工具同族的算法(最长公共子序列),输出读起来就像熟悉的代码审查:+ 表示新增行,− 表示删除行。
为什么使用它?
- 直接看到两个版本之间真正的改动,不用肉眼逐行找。
- 熟悉的 git 风格输出:绿色新增、红色删除、中间是上下文。
- 一眼看到新增和删除行数的统计。
- 适用于任何文本——代码、配置、文档、清单。
- 私密:两段文本都留在浏览器本地,不上传。
使用方法
- 把原始文本粘贴到左边。
- 把修改后的版本粘贴到右边。
- 点"对比"。
- 查看结果:绿色是新增的行,红色是删除的行,无色的行未变。
示例
输入
原始:
line one
line two
line three
修改后:
line one
line 2
line three输出
line one
− line two
+ line 2
line three中间那行被修改了,diff 把它显示为删除旧行、新增新行。
常见使用场景
- 审阅AI改写的段落:把原文和AI改写版本分别粘贴进来,直接看到哪些句子被改了,不用重新通读全文找差异。
- 对比两版合同草稿:文档格式变过之后,法务改动用行级diff看往往比追踪修订更直观。
- 部署后检查配置文件:把.env或YAML文件的改动前后粘贴进来,确认只有预期的那几行变了。
- 对比翻译稿的修改:看译者或编辑在两版之间实际改动了哪些行。
需要知道的局限
这是行级diff,不是词级diff——如果你把一段文字从文档开头移到结尾但内容没变,会显示成一次完整删除加一次完整新增,不会标注成"移动"。对于每句话只改几个字的大段文章,词级diff工具标出来的高亮范围会更小;但行级diff是代码、配置和结构化文档的标准做法,也是本工具专注的场景。
对比算法是怎么运作的
工具会找出两段文本之间的最长公共子序列(LCS)——也就是在两个版本里都按相同相对顺序出现的最大行集合,即使中间插入或删除了别的行也不影响。这个公共子序列里的所有行都显示为未变的上下文;其余的行要么归为删除(只在原文里出现),要么归为新增(只在新版本里出现)。这正是 Unix diff 工具和 Git 逐行对比背后的核心算法,所以如果你review过pull request,这种输出格式看起来会很眼熟。
一个实际影响:如果文档里某一行原本就重复出现(完全相同的文本出现了两次),算法会把它匹配到能让整体diff结果最小的那个位置——偶尔可能匹配出跟你直觉预期不完全一样的配对方式,不过无论具体是哪个重复行被匹配到哪里,最终的新增/删除行数统计都是准确的。
常见问题
是按词对比还是按行对比?
按行,和 git diff 一样。被修改的行显示为一次删除加一次新增。行级对比是代码和配置的标准做法,大文本下依然清晰易读。
为什么只改了一个字,整行都标成变化了?
因为对比的单位是行——行内任何改动都会标记整行。需要更细粒度时,把长段落拆成短行再对比。
空格影响结果吗?
影响。两行必须完全一致才算相同,行尾空格或缩进不同都会被判定为不同行。这是有意的——在代码和配置里,空白差异就是真实差异。
有大小限制吗?
没有硬性限制,但特别大的文本(几万行)可能需要一点时间,因为对比在你的设备本地运行。
对比时文本会被上传吗?
不会。diff 算法完全通过浏览器内 JavaScript 运行,两段文本都留在你的设备上——合同、内部文档、未发布代码都可以放心对比。