3

在 vim 中区分两个文件时(例如 vim -d file1 file2),我希望忽略所有空格。

我几乎通过在这个问题中遵循 Adam Katz 的建议实现了这一点: 有没有办法将 vimdiff 配置为忽略所有空格?

该建议导致 diff 命令获取 -w 选项,因此它不包括结果中只有空格差异的行。

如果有一行同时存在空格差异和非空格差异,则 diff 会正确返回这些差异。但是 vim 也将空格突出显示为不同之处。

例如,如果有差异的两行是:

File 1: a,b,c,d
File 2: a, b, c, e

然后突出显示的差异将b, c, e代替我想要的e.

有没有办法告诉 vim 在其突出显示过程中忽略空格?

我正在使用 vim 7.3 (gvim)。

4

2 回答 2

2

diff对行而不是字符或单词进行操作,因此-b-w确定要忽略哪些行。如果没有忽略一行,每当涉及非空白更改时都会出现这种情况(除非您忽略大小写或显式忽略与某些正则表达式匹配的行),diff将始终输出如下内容:

1c1
< a,b,c,d
---
> a, b, c, e

改变diffopt甚至diffexpr只影响 Vim 调用diff的方式,而不是它如何处理它接收到的差异。由于既-b不会也-w不会改变上述差异,因此 Vim 将显示相同的结果。因此,您正在寻找的是一种改变 Vim 如何准确突出它接收到的差异的方法,我认为这是不可能的。

于 2013-08-01T22:07:03.587 回答
0

文件 1 = f1,文件 2 = f2

删除另一个临时文件中的空格怎么样?

vim -c "s/\s//g" -c "wq! f2.tmp" f2

然后

vimdiff f1 f2.tmp
于 2013-08-01T23:37:46.697 回答