ฉันจะเปิดใช้งานเอาต์พุตสีสำหรับ OSX diff ได้อย่างไร


33

ฉันต้องการ diff สองไฟล์ (ไม่ใช่ไฟล์เดียวกันสองไฟล์พวกเขาถูกติดตามโดย git แต่ไม่เกี่ยวข้อง) และฉันต้องการเอาท์พุทที่มีสีสันบางอย่างฉันจะทำสิ่งนั้นได้อย่างไร

$ diff file_1 file_2

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

$ 

รหัสด้านบนแสดงให้ฉันเห็นความแตกต่างระหว่างไฟล์เหล่านั้น แต่ไม่มีสีใด ๆ สำหรับ diffs ที่ยาวขึ้นซึ่งอ่านยาก


อีกวิธีหนึ่งคือมีวิธีสำหรับ git (ที่ฉันมีสีออกดี) เพื่อ diff สองไฟล์ที่แตกต่างกัน (ไม่เปลี่ยนแปลงไฟล์)

OSX (10.7.5)

คำตอบ:


39

Perl มี AA น่าเบื่อcolordiffเสื้อคลุมสำหรับ diff แต่ฉันชอบGRC (Colorizer ทั่วไป)

ด้วยgrc (colorizer ทั่วไป)คุณสามารถเขียน wrappers ของคุณเองสำหรับคำสั่งหรืออินพุตชนิดต่าง ๆ (ถ้าคุณชอบสิ่งนั้น)

ด้านล่างนี้grcทำงานกับ/var/log/syslog(ในการกำหนดค่าไฟล์นี้ถูกตั้งค่าเป็นโทนสีที่แน่นอน) ซึ่งจะเน้นถึงกระบวนการ pids, IP และ "เชื่อมต่อ"

แน่นอนแนะนำให้ใช้นามแฝงเพื่อที่คุณจะได้ไม่ลืม:

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

grc ทำงานกับ syslog


หากคุณมีคอมไพล์คุณอาจต้องการที่จะใช้ซึ่งจะช่วยให้diffไอเอ็นจีที่แข็งแกร่งมากแม้ในสาขา

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

คุณไม่จำเป็นต้องใช้git diffภายในที่เก็บข้อมูลคุณสามารถใช้มันสำหรับไฟล์ทั่วไปเท่านั้นป้อนคำอธิบายรูปภาพที่นี่

git diff old.txt new.txt

เช่นเคยคุณสามารถใช้นามแฝงdiffเพื่อความสะดวกในการใช้งาน

alias diff="git diff"

6
yay สำหรับ git diff
chrismarx

8
git diffควรอยู่ด้านบนสุดของคำตอบของคุณ! +1 สำหรับการชี้ให้เห็นว่ามันทำงานได้แม้อยู่นอกพื้นที่เก็บข้อมูล
Lucio Paiva

4
'git diff' ไม่ทำงานกับไฟล์ทั่วไปดังนั้น aliasing 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 -d file_1 file_2

ไม่เพียง แต่ใช้สีมันจัดเรียงไฟล์เพื่อให้ง่ายต่อการมองเห็นการเพิ่ม / ลบบรรทัด


ว้าว ... เป็นกลุ่มเป็นสิ่งที่สวยงาม
Weston Ganger

@WestonGanger เป็นกลุ่มที่น่าตื่นตาตื่นใจจริง ๆ ไม่เคยสิ้นสุดที่จะสร้างความประทับใจให้ฉัน
ฟิลิป Kearns

1
เป็นกลุ่มที่ทำงานกับไฟล์แก้ไขคอมไพล์เกินไป (แสดงสีที่แตกต่าง)!
ryanman


6

เพื่อสร้างคำตอบที่ได้รับการอนุมัติ: grc ใช้งานได้ดีในเรื่องนี้ มันสามารถติดตั้งได้กับการชงและ colorizes จำนวนคำสั่ง terminal ออกจากกล่องแตกต่างเป็นหนึ่งในพวกเขา ดังนั้น...

brew install grc

... ติดตั้ง grc ในระบบของคุณ จากนั้นคุณต้องตั้งค่านามแฝงของคุณ Brew caveat เป็นทางออก เพียงเพิ่มบรรทัดต่อไปนี้ในของคุณ.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.