文本差异比较可以处理什么?
文本比较寻找两份输入中最长的共同完整行序列,再显示新增、删除和保留行。一行中的字符变化会显示为删除旧行并新增新行。开启忽略空白后,比较和显示都使用去掉首尾空白并合并重复空白的行。
逐行比较适合什么内容?
配置文件、代码片段和一行一项的列表适合逐行比较。JSON 的键顺序或缩进变化可以使用 JSON 结构差异比较;需要检查一段长文字中的具体字词变化时,应使用支持字词级比较的工具。
如何使用?
- 在“原始文本”中粘贴旧版本,在“修改后的文本”中粘贴新版本。
- 仅在首尾和重复空白不需要作为变化显示时,勾选“忽略空白差异”。
- 查看 + 新增行、− 删除行及无标记的共同文本,再点击“复制”保存纯文本差异。
实际输入输出示例
替换一整行文本
输入
原始文本:
alpha
beta
修改后的文本:
alpha
gamma输出
alpha
+ gamma
- betaalpha 保持不变,gamma 是新增行,beta 是删除行。相同位置的替换可能先显示新增再显示删除,工具不标记行内字符。
常见错误与修复方法
| 现象 | 可能原因 | 修复方法 |
|---|---|---|
| 只改了一个字,却显示一条删除和一条新增。 | 此工具的比较单位是完整行。 | 这是逐行比较的正常结果;如需查看具体字词变化,请使用字词级比较工具。 |
| 提示比较规模超过浏览器限制。 | 两份输入的行数乘积超过 400 万、总行数超过 2 万,或总 UTF-8 字节数超过 2 MB。 | 按段落或文件章节拆分输入后分别比较。 |
| 勾选忽略空白后,输出空白也变了。 | 输出使用参与比较的标准化行。 | 需要保留原始空白时,取消忽略空白选项,并另外保存原文件。 |
差异输出的边界
结果是便于阅读的逐行对比,不包含 unified diff 文件头及行号,不保证可直接交给 patch 命令。比较不会上传文本;清空输入或超过规模限制后,旧结果会清除。
标准与实现参考
- GNU Diffutils 手册 (opens in a new tab)介绍逐行比较和补丁格式;本站的可读输出不声称兼容 GNU patch。
关于文本差异比较的常见问题
文本或代码会上传吗?
不会。两份文本及比较结果仅在当前浏览器标签页处理。
会标出行内具体字符的变化吗?
不会。当前版本按完整行比较,修改一行显示为删除旧行和新增新行。
忽略空白具体忽略什么?
去掉每行首尾空白,并将行内连续空白合并为一个空格;输出也会使用标准化后的行。
复制结果可以直接作为补丁吗?
不能保证。输出没有 unified diff 文件头和行号,适合人工检查和记录差异。
更新记录
补齐中文输入标签、比较步骤、逐行示例、FAQ 和规模限制,明确忽略空白后的输出行为,并在失败时清除旧结果。