【发布时间】:2015-01-05 14:07:54
【问题描述】:
如何强制 vimdiff 始终逐行比较两个文件而不识别添加或删除的行?
问题是,如果两个文件之间的差异很大,但是文件中的两行偶然匹配,vimdiff 认为这些行是相同的,只是将其余的视为添加或删除的行,结果差异是完全无法使用。就我而言,file1 中的第 i 行始终对应于 file2 中的第 i 行,因此 vimdiff 没有业务查找添加或删除的行。
以下是一个小示例,其中包含两个文件,每个文件包含三个变量的值。 Vimdiff 错误地将 file1/line1 与 file2/line3 匹配,并认为它周围的一些行已被添加或删除。差异(减去颜色)看起来像这样:
| 1 foo 8.1047 < del/new
| 2 bar 6.2343 < del/new
1 foo 0.0000 | 3 foo 0.0000 < match
2 bar 5.3124 | 4 bar 1.4452 < wrong
3 foo 4.5621 | < new/del
4 bar 6.3914 | < new/del
5 foo 1.0000 | 5 foo 1.0000 < match
6 bar 6.3212 | 6 bar 7.2321 < wrong
然而,我想要的是以下内容,除了匹配的第 5 行之外,所有行都标记为错误:
1 foo 0.0000 | 1 foo 8.1047 < wrong
2 bar 5.3124 | 2 bar 6.2343 < wrong
3 foo 4.5621 | 3 foo 0.0000 < wrong
4 bar 6.3914 | 4 bar 1.4452 < wrong
5 foo 1.0000 | 5 foo 1.0000 < match
6 bar 6.3212 | 6 bar 7.2321 < wrong
【问题讨论】:
-
你可能想使用 "sdiff file1 file2" 而不是 vimdiff ?
-
@OlivierDulac:不,不是真的,我在这些情况下比较的文件要长得多,我想滚动浏览它们,所以 vimdiff 很好。不过,我不知道
sdiff,它绝对可以方便地比较短文件。