OSX diffの色付き出力を有効にするにはどうすればよいですか?


33

2つのファイルを比較する必要があります(同じファイルの2つのバージョンではありませんが、gitによって追跡されますが、それは無関係です)、色付きの出力が必要です、どうすればそれを達成できますか?

$ diff file_1 file_2

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

$ 

上記のコードは、これらのファイルの違いを示していますが、色はありません。長い差分の場合、読みにくい。


あるいは、git(私は素敵なカラー出力があります)が2つの異なるファイル(ファイルへの変更ではない)を比較する方法がありますか?

OSX (10.7.5)

回答:


39

Perlにはdiff用のcolordiffラッパーがありませんが、私はgrc(generic colorizer)を好みます。

GRC(一般的なカラー表示機能)(あなたがそういったことを好きなら)、あなたはコマンドまたは異なるタイプの入力のための独自のラッパーを書くことができます。

以下でgrcは、/var/log/syslog(設定では、このファイルは特定の配色に設定されています)に対して実行され、プロセス、pid、IP、および「接続」を強調表示します。

もちろん、忘れないようにエイリアスを使用することをお勧めします。

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

syslogに対して実行されているgrc


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のイェイ
-chrismarx

8
git diffあなたの答えの一番上にあるべきです!リポジトリの外でも機能することを指摘してくれた+1。
ルチオパイヴァ

4
'git diff'は汎用ファイルでは機能しないため、 'git diff'であるようにdiffをエイリアスすることは有害な場合があります
アントンチキン

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は美しいものです。
ウェストンガンガー

@WestonGanger Vimは私を感動しなくなったことはありません、確かに素晴らしいです
フィリップ・カーンズ

1
vimはgitパッチファイルでも機能します(色付きの差分が表示されます)!
ライアンマン


6

承認された答えに基づいて:grcはこれに最適です。brewでインストール可能で、多くの端末コマンドをすぐに色付けできます。diffはそのうちの1つです。そう...

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'
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.