当我有一个差异时,我如何给它上色,使它看起来更好?
我想它的命令行,所以请没有GUI解决方案。
当我有一个差异时,我如何给它上色,使它看起来更好?
我想它的命令行,所以请没有GUI解决方案。
当前回答
使用bat命令:
diff file1 file2 | bat -l diff
其他回答
实际上,似乎还有另一个选择(我最近才注意到,当遇到上面描述的问题时):
git diff --no-index <file1> <file2>
# output to console instead of opening a pager
git --no-pager diff --no-index <file1> <file2>
如果您身边有Git(您可能已经在使用它了),那么您将能够使用它进行比较,即使文件本身不受版本控制。如果默认情况下没有启用,那么在这里启用颜色支持似乎比前面提到的一些变通方法要容易得多。
diff的手册页没有建议从内部进行着色的解决方案。请考虑使用色差。它是diff的包装器,产生与diff相同的输出,除了它使用彩色语法高亮显示来增强输出以增加可读性:
diff old new | colordiff
或者是:
colordiff old new
安装:
Ubuntu/Debian: sudo apt-get install colordiff OS X: brew install colordiff或port install colordiff
当yum install colordiff或apt-get install colordiff由于一些超出你直接控制的疯狂限制而不是一个选项时,或者你只是感觉疯狂,你可以用一行sed来重新发明轮子:
sed 's/^-/\x1b[41m-/;s/^+/\x1b[42m+/;s/^@/\x1b[34m@/;s/$/\x1b[0m/'
把它扔到一个shell脚本中,并通过它管道统一的差异输出。
它使大块标记为蓝色,突出显示新/旧文件名和添加/删除的行,分别为绿色和红色背景它将使尾随空格2的变化比colordiff更明显。
顺便说一句,突出显示与修改行相同的文件名的原因是,要正确区分文件名和修改行,需要正确解析diff格式,这不是用正则表达式可以解决的问题。突出显示它们在视觉上“足够好”,使问题变得微不足道。也就是说,有一些有趣的微妙之处。
2但不是尾随制表符。显然制表符没有得到它们的背景设置,至少在我的xterm中是这样。它确实使制表符与空格的变化脱颖而出。
我使用grc(通用着色器),它允许您对包括diff在内的许多命令的输出进行着色。
它是一个Python脚本,可以封装在任何命令中。因此,不是调用diff file1 file2,而是调用grc diff file1 file2来查看着色的输出。我有别名diff到grc diff使它更容易。
到目前为止还没有人提到delta。它支持带有语法高亮的语法彩色差异视图。