Làm cách nào tôi có thể bật đầu ra màu cho OSX diff?


33

Tôi cần phải tìm khác biệt hai tệp (không phải hai phiên bản của cùng một tệp, tuy nhiên chúng được theo dõi bởi git, nhưng điều đó không liên quan) và tôi muốn một số đầu ra có màu, làm thế nào tôi có thể đạt được điều đó?

$ diff file_1 file_2

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

$ 

Mã ở trên cho tôi thấy sự khác biệt giữa các tệp đó, tuy nhiên không có bất kỳ màu nào. Đối với diffs dài hơn mà khó đọc.


Ngoài ra, có cách nào để git (mà tôi có đầu ra màu đẹp) để tìm hai tệp khác nhau (không thay đổi thành tệp) không?

OSX (10.7.5)

Câu trả lời:


39

Perl có một trình bao bọc colordiff thiếu ánh sáng cho diff, nhưng tôi thích grc (colorizer chung) .

Với grc (bộ tạo màu chung) , bạn có thể viết các hàm bao riêng của mình cho các loại lệnh hoặc đầu vào khác nhau (nếu bạn thích loại điều đó).

Bên dưới, grcđang chạy ngược lại /var/log/syslog(trong cấu hình, tệp này được đặt thành một bảng màu nhất định), trong đó nó làm nổi bật các quá trình, pids, IP và "kết nối".

Tất nhiên, nên sử dụng bí danh để bạn không quên:

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

grc chạy chống lại syslog


Nếu bạn có git, bạn có thể chỉ muốn sử dụng nó, cho phép diffing rất mạnh mẽ , thậm chí trên các chi nhánh.

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

Bạn không phải sử dụng git difftrong kho lưu trữ, bạn có thể sử dụng nó cho các tệp thông thường.nhập mô tả hình ảnh ở đây

git diff old.txt new.txt

Như mọi khi, bạn có thể bí danh diffđể dễ sử dụng.

alias diff="git diff"

6
yay cho git diff
chrismarx

8
git diffnên ở đầu câu trả lời của bạn +1 để chỉ ra rằng nó hoạt động ngay cả bên ngoài kho lưu trữ.
Lucio Paiva

4
'git diff' không hoạt động trên các tệp chung vì vậy việc đặt biệt danh diff thành 'git diff' có thể gây hại
Anton Chikin

1
Điều này không hoạt động đối với tôi ... echo one > foo; echo two > bar; git diff foo barkhông tạo ra đầu ra, trong khi diff foo barsản xuất 1c1 < one --- > two (với định dạng phù hợp, tất nhiên)
LarsR

git diffkhông làm việc cho ví dụ ống
Piotr Findeisen

34

Khi khác biệt tập tin tôi hầu như luôn sử dụng vim:

vim -d file_1 file_2

Nó không chỉ sử dụng màu sắc, nó sắp xếp các tập tin để dễ dàng nhìn thấy các dòng được thêm / xóa.


Wow ... Vim là một điều đẹp.
Weston Ganger

@WestonGanger vim thực sự tuyệt vời, không bao giờ hết ấn tượng với tôi
Philip Kearns

1
vim cũng hoạt động trên các tập tin vá git (hiển thị màu khác)!
ryanman


6

Để xây dựng dựa trên câu trả lời đã được phê duyệt: grc hoạt động rất tốt cho việc này. Nó có thể cài đặt được với brew và tô màu một số lệnh đầu cuối ra khỏi hộp, khác biệt là một trong số chúng. Vì thế...

brew install grc

... cài đặt grc vào hệ thống của bạn. Sau đó, bạn cần thiết lập bí danh của mình, caveat cung cấp một giải pháp. Đơn giản chỉ cần thêm dòng sau đây của bạn .bashrchoặc tương tự.

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

Điều này hiện sẽ thêm các bí danh sau:

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'
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.