我需要比较(如果可能的话,使用 vim 作为比较前端)无数个文件,所有这些文件至少在两个方面(根据设计)不同:
- char* -> char const*
- foo.m_data -> foo
这个我不关心。 diff
允许使用 -I
排除整行,但一行可能既具有所需的差异,又具有我需要纠正的其他差异,如下所示:
void foo ( char* bar, int alice )
---
void foo ( char const* bar, float bob )
有谁知道如何使用 diff(最好以 vim 脚本或其他工具可以表达的方式)来找到 int alice
和 float 之间的差异bob
,但不是 char*
和 char const*
?
重申并举另一个例子,我不想看到这个:
char* bar = foo( (char*)baz );
---
char const* bar = foo( (char const*)baz );
因为该行中唯一的变化是 const,但我需要看到这个
char* bar, baz = 'A';
---
char const* bar, foo = 'A';
因为除了 const 之外还有其他变化。
谢谢!
最佳答案
我已经在我的 AdvancedDiffOptions plugin 中实现了这样的功能,这是我刚刚发布的。这是通过 sed
过滤两个缓冲区,删除应该忽略的部分,然后将其提供给 diff
(通过自定义 'diffexpr'
)。
例如,要忽略 diff 中 char const
与 char
的类型差异([ ]
是指定关键字前的空格):
:DiffIPattern [ ]const
:DiffIPattern \.m_data
关于unix - Vimdiff/Diff 包含排除的单词(但不包括行),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25135308/