显示差异输出中一行内的差异

时间:2009-08-27 16:34:46

标签: diff patch word-diff

This StackOverflow answer有一张KDiff3图像,突出显示行内差异。有人知道一个工具可以在命令行上显示相同的(例如,通过颜色)吗?

想到这一点的另一种方法是想要在补丁文件中区分每个差异。

6 个答案:

答案 0 :(得分:10)

我不知道这是否足以满足您的目的,但vimdiff可以做到这一点(甚至是颜色)。例如,请参阅此related question中的图片。

答案 1 :(得分:5)

我尝试了我找到的所有工具:wdiff,dwdiff,kdiff3,vimdiff来显示两条长而略有不同的线条之间的区别。我最喜欢的是diff-highlight(git contrib的一部分)

  • 它支持diff格式 - 比需要两个文件(如dwdiff)的工具更有优势,例如:如果你需要可视化单元测试的输出
  • 如果您将其连接到colordiff
  • ,它会突出显示为黑色+白色或带有颜色
  • 突出显示字符 - 有助于比较没有空格的长行(优于wdiff)

安装

在Ubuntu上,你可能已经将它作为git contrib的一部分(安装在git deb包中)。 将其复制或链接到/usr/share/doc/git/contrib/diff-highlight/diff-highlight

的〜/ bin文件夹中

用法示例

cat tmp.diff | diff-highlight | colordiff

结果:

enter image description here

答案 2 :(得分:4)

另一种直观的方法是查看所有字大小的差异(尽管不是并排)是将wdiffcolordiff一起使用(您可能需要同时安装两者)。这方面的一个例子是:

wdiff -n {file-A} {file-A} | colordiff

您可以选择将其导入less -R以滚动输出(-R用于显示less中的颜色。)

答案 3 :(得分:2)

您可能可以使用colordiff

man page

  

传递给colordiff的任何选项都是   传递到diff除了   colordiff特定选项'difftype',   e.g。

     

colordiff --difftype=debdiff file1 file2

     

'difftype'的有效值是:diff,   diffc,diffu,diffy,wdiff,debdiff;   这些对应于普通差异,   上下文差异,统一差异,   并排差异,wdiff输出和   debdiff分别输出。使用这些   当colordiff不能时,重写   确定差异类型   自动。

我还没有对它进行过测试,但并排输出(由diff -y file1 file2生成)可能会给你相同的内联差异。

答案 4 :(得分:2)

我遇到了类似的问题,并希望避免使用vimdiff。我发现dwdiff(在Debian中可用)比wdiff有几个优势。

dwdiff最有用的功能是您可以使用-d [CHARS]自定义分隔符,因此它可用于比较各种输出。它还内置了-c标记的颜色。

答案 5 :(得分:1)

ccdiff是用于此任务的便捷专用工具。这是一个示例的样子:

ccdiff example output

默认情况下,它会突出显示颜色差异,但也可以在不支持颜色的控制台上使用。

该软件包包含在Debian的主存储库中:

ccdiff是一种彩色的diff,它也在更改后的行内着色。

所有显示两个文件之间差异的命令行工具都无法显示细微的变化,这很有用。 ccdiff尝试提供diff --colorcolordiff的外观,但将彩色输出的显示从彩色已删除和已添加的行扩展为更改后的行中已删除和已添加字符的颜色。