有没有办法配置vimdiff忽略具有非空白差异的行上的空格?

时间:2013-08-01 14:40:01

标签: vim diff vimdiff

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

我几乎通过遵循Adam Katz在这个问题中的建议来实现这一点: Is there a way to configure vimdiff to ignore ALL whitespaces?

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

如果存在具有空白差异和非空白差异的行,则diff会正确返回这些行。但是vim也强调了这个空白。

E.g。如果差异的两条线是:

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

然后突出显示的差异将是b, c, e而不是我想要的e

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

我正在使用vim 7.3(gvim)。

2 个答案:

答案 0 :(得分:2)

diff按行而不是字符或单词操作,因此-b-w确定忽略哪些。如果不忽略某一行,那么只要涉及非空白更改(除非您忽略大小写或明确忽略与某些正则表达式匹配的行),diff将始终输出如下内容:

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

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

答案 1 :(得分:0)

文件1 = f1, 文件2 = f2

如何删除另一个临时文件中的空格?

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

然后

vimdiff f1 f2.tmp