ทำให้ diff ใช้ความกว้างเทอร์มินัลเต็มในโหมดเคียงข้างกัน


40

แอพพลิเคชั่นส่วนใหญ่ฉลาดเกี่ยวกับการใช้ความกว้างเต็มของเทอร์มินัลที่มีให้ เปลือกของฉันทำ, หน้าจอ, เป็นกลุ่ม, ฯลฯ อย่างไรก็ตามdiffในโหมดแบบเคียงข้างกัน ( -y) ไม่ได้ สิ่งนี้ทำให้ฉันโกรธ ใช้ความกว้างอักขระ 126 ตัวซึ่งไม่ได้แม้แต่ครึ่งหนึ่งของเทอร์มินัลความกว้างบล็อกของฉัน 270

-Wมองผ่านหน้าคนไม่ได้เปิดเผยอะไรโดยเฉพาะอย่างยิ่งเกี่ยวกับการปรับโดยอัตโนมัติความกว้างเพียงด้วยตนเองระบุผ่านทาง

อาจมี "คุณสมบัติที่ซ่อนอยู่" ของdiffเพื่อให้ขยายโดยอัตโนมัติเต็มความกว้างของ terminal? หรือ; เส้นทางที่ง่ายที่สุดในการแทรก-W <terminalsize>คำสั่ง diff โดยอัตโนมัติเมื่อใดก็ตามที่ฉันเรียกใช้คืออะไร

ฉันอยู่ภายใต้การสันนิษฐานว่าการผนวก -W กับทุกสิ่งไม่สามารถทำร้ายอะไรได้โดยอัตโนมัติเพราะมันจะหมายถึง "ใช้คอลัมน์ $ x" เท่านั้นซึ่งเป็นสิ่งที่ฉันต้องการเสมอไม่ว่าฉันจะอยู่ในโหมดแบบเคียงข้างกัน หรืออย่างอื่น

คำตอบ:


51
$ alias diff='diff -W $(( $(tput cols) - 2 ))'

ควรจะทำมัน คุณจะต้องการเพิ่มลงใน ~ / .bashrc เช่นกัน

- 2เป็นส่วนใหญ่หวาดระแวงในบางกรณีการขยายตัวพอที่จะทำให้ห่อสาย (ฝังแบบ double-width Unicode?); ถ้าคุณต้องการคุณสามารถใช้

$ alias diff='diff -W $(tput cols)'

ฉันเริ่มสังเกตเห็น $ COLUMNS และกำลังคิดอะไรบางอย่างในบรรทัดเดียวกัน alias diff = "diff -W $ {COLUMNS}" ฉันคิดว่าฉันต้องการถามเชลล์มากกว่าพึ่งพาสภาพแวดล้อม
VxJasonxV

1
tputพิจารณา$COLUMNS, stty -aและคำอธิบายขั้วใช้ครั้งแรกของผู้ที่มีค่ามีความหมาย eval $(resize)สามารถใช้เพื่อบังคับให้พวกเขาซิงค์กับสิ่งที่เครื่องคิดว่าขนาดของมันคือ
geekosaur

ทราบว่าถ้าคุณมี tabstops ที่ไม่เป็นมาตรฐาน (เช่นtabs 2ใน .bashrc ของคุณ) คุณยังจะต้องใช้ธง -t หรือ diff จะผลิตออกที่แปลกประหลาดมาก
เจฟฟ์
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.