如何为 OSX diff 启用彩色输出?

如何为 OSX diff 启用彩色输出?

我需要比较两个文件(不是同一个文件的两个版本,虽然它们被 git 跟踪,但这并不相关)并且我想要一些彩色的输出,我该如何实现?

$ diff file_1 file_2

1,9d0
< <script ... >
<     // more code
< </script>

$ 

上面的代码显示了这些文件之间的差异,但是没有任何颜色。对于较长的差异,很难阅读。


或者,有没有办法让 git (我确实有很好的颜色输出) 来比较两个不同的文件(而不是对文件的更改)?

OSX (10.7.5)

答案1

Perl 有一个乏善可陈的颜色差异不同的包装器,但我更喜欢grc (通用着色器)

grc (通用着色器),您可以为不同类型的命令或输入编写自己的包装器(如果您喜欢这种东西)。

下面,grc正在运行/var/log/syslog(在配置中,此文件设置为特定的颜色方案),其中突出显示进程、pid、IP 和“连接”。

当然,建议使用别名,这样你就不会忘记:

alias diff="/usr/bin/grc /usr/bin/diff"

grc 针对 syslog 运行


如果您有 git,您可能只想使用它,它允许非常强大的diff功能,甚至跨分支。

git diff master:cogs/foo.txt branch:widgets/bar.txt

您不必git diff在存储库内使用,您可以将其用于常规文件。在此处输入图片描述

git diff old.txt new.txt

与往常一样,您可以使用别名diff以方便使用。

alias diff="git diff"

答案2

当比较文件差异时我几乎总是使用 vim:

vim -d file_1 file_2

它不仅使用颜色,还将文件排列起来,以便更容易看到添加/删除的行。

答案3

基于已批准的答案:格鲁吉亚非常适合这个。它可以通过 brew 安装,并且可以开箱即用地为许多终端命令着色,diff 就是其中之一。所以...

brew install grc

...将 grc 安装到您的系统中。然后您需要设置别名,brew 警告提供了一个解决方案。只需将以下行添加到您的.bashrc或类似的文件中即可。

source "`brew --prefix`/etc/grc.bashrc"

当前将添加以下别名:

alias colourify="$GRC -es --colour=auto"
alias configure='colourify ./configure'
alias diff='colourify diff'
alias make='colourify make'
alias gcc='colourify gcc'
alias g++='colourify g++'
alias as='colourify as'
alias gas='colourify gas'
alias ld='colourify ld'
alias netstat='colourify netstat'
alias ping='colourify ping'
alias traceroute='colourify /usr/sbin/traceroute'
alias head='colourify head'
alias tail='colourify tail'
alias dig='colourify dig'
alias mount='colourify mount'
alias ps='colourify ps'
alias mtr='colourify mtr'
alias df='colourify df'

答案4

你可以使用 git区分两个不同的文件

git diff branch1:full/path/to/foo.txt branch2:full/path/to/foo-another.txt

相关内容