unix - Vimdiff/Diff 包含排除的单词(但不包括行)

标签 unix diff vim

我需要比较(如果可能的话,使用 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 alicefloat 之间的差异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 constchar 的类型差异([ ] 是指定关键字前的空格):

:DiffIPattern [ ]const
:DiffIPattern \.m_data

关于unix - Vimdiff/Diff 包含排除的单词(但不包括行),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25135308/

相关文章:

linux - 如何在 unix 中将第一列移动到最后一列?

c - 在 C 中实际的 write() 什么时候发生?

java - XML 差异与合并

展开 html 标签后的 Vim 光标位置

c++ - 假设任何 x86 编译的应用程序总是在 x64 版本下运行是否安全?

c - 通过fd获取目录路径

github - 将 GitHub 要点与其分支进行比较

git - 逐 block 应用提交 block

python - ipdb 在 vi​​m 控制台中不起作用

vim - 搜索并删除多行,包括匹配的行