如何为OSX差异启用彩色输出?


33

我需要比较两个文件(不是同一文件的两个版本,但是它们是由git跟踪的,但这是无关的),我想要一些彩色输出,如何实现呢?

$ diff file_1 file_2

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

$ 

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


或者,是否有一种方法git(我确实具有不错的颜色输出)来区分两个不同的文件(而不是更改文件)?

OSX (10.7.5)

Answers:


39

Perl 对于diff 有一个乏味的colordiff包装器,但是我更喜欢grc(通用着色器)

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

下面grc是运行时/var/log/syslog(在配置中,此文件设置为某种配色方案),其中突出显示了进程,pid,IP和“连接”。

当然,建议使用别名,以免忘记:

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

grc针对syslog运行


如果您有git,则可能只想使用它diff,即使在分支之间也可以实现非常强大的ing。

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

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

git diff old.txt new.txt

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

alias diff="git diff"

6
对git diff来说是yay
chrismarx 2015年

8
git diff应该在您的答案的顶部!+1指出它甚至可以在存储库之外工作。
Lucio Paiva 2015年

4
“ git diff”不适用于通用文件,因此将diff别名为“ git diff”可能有害
Anton Chikin

1
这对我不起作用...不echo one > foo; echo two > bar; git diff foo bar产生任何输出,而diff foo bar产生1c1 < one --- > two (当然使用正确的格式)
LarsR

git diff不适用于例如管道
Piotr Findeisen

34

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

vim -d file_1 file_2

它不仅使用颜色,而且使文件排列整齐,因此更容易看到添加/删除的线条。


哇... Vim是很美的东西。
Weston Ganger

@WestonGanger vim确实很棒,永不间断打动我
Philip Kearns

1
vim也可以在git补丁文件上工作(显示有色差异)!
ryanman '16


6

基于已批准的答案:grc为此非常有用。它可以与brew安装在一起,并为开箱即用的多个终端颜色着色,diff是其中之一。所以...

brew install grc

...将grc安装到您的系统。然后,您需要设置别名,酿造警告提供了一个解决方案。只需将以下行添加到您的.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'
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.