我需要差异化(如果可能的话,使用vim作为差异前端)无数文件,所有这些文件在设计上至少有两个方面不同:
我不在乎。 diff
允许使用-I
排除整行,但可能是一行包含所需的差异,以及我需要纠正的其他差异,如下所示:
void foo ( char* bar, int alice )
---
void foo ( char const* bar, float bob )
是否有人知道如何使用diff,最好以可以在vimscript或其他工具中表达的方式使用diff,这将找出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';
因为除了之外还有其他更改。
谢谢!
答案 0 :(得分:1)
我已经在我刚刚发布的AdvancedDiffOptions plugin中实现了这样的功能。这可以通过sed
过滤两个缓冲区,删除应该忽略的部分,然后将其提供给diff
(通过自定义'diffexpr'
)。
例如,要忽略差异中char const
与char
的类型差异([ ]
是在关键字前指定空格的技巧):
:DiffIPattern [ ]const
:DiffIPattern \.m_data
答案 1 :(得分:0)
你所要求的比常规差异更复杂。你需要一个语义差异。你可以结帐: