ฉันจะได้รับน้อยลงไม่ให้ขาวดำเอาท์พุท?
เช่นผลลัพธ์ที่ออกมาgit diff
เป็นสี แต่git diff | less
ไม่ใช่
less
เท่านั้น
ฉันจะได้รับน้อยลงไม่ให้ขาวดำเอาท์พุท?
เช่นผลลัพธ์ที่ออกมาgit diff
เป็นสี แต่git diff | less
ไม่ใช่
less
เท่านั้น
คำตอบ:
ใช้:
git diff --color=always | less -r
--color=always
จะมีการบอกgit
รหัสสีเอาท์พุทแม้ว่าการส่งออกเป็นไพพ์ (ไม่ใช่ tty) และ-r
จะมีการบอกless
ให้ตีความรหัสสีเหล่านั้นและลำดับการหลีกเลี่ยงอื่น ๆ ใช้-R
สำหรับรหัสสี ANSI เท่านั้น
git config color.ui true
ควรจะเพียงพอที่จะรับเอาท์พุทสีและเรียกใช้เพจเจอร์สำหรับเอาต์พุตที่ยาว
watch --color 'git diff --cached --color=always'
และเพื่อน ๆ สามารถนำความเจ๋ง ๆ เพิ่มเติมมาให้คุณได้
less -R
ดีขึ้น (หรือexport LESS=R
ใน/etc/profile
)? เหตุใดคุณจึงอนุญาตให้แสดงอะไรก็ได้ยกเว้นลำดับหนีภัย "สี" ของ ANSI นอกจากนี้หน้าคนพูดWarning: when the -r option is used, less cannot keep track of the actual appearance of the screen (since this depends on how the screen responds to each type of control character). Thus, various display problems may result, such as long lines being split in the wrong place.
-r
ตัวเลือกคุณสามารถพิมพ์ "-r" ที่less
พรอมต์ หลักสูตรนี้ใช้ได้กับตัวเลือกส่วนใหญ่หรือตัวเลือกที่น้อยกว่า (เช่น-i
เพื่อเปิดใช้การเพิกเฉย)
grep --color=always
ทำงานในลักษณะเดียวกัน นี่ไม่ใช่ส่วนหนึ่งของคำถามหรือคำตอบนี้ แต่ฉันมาที่นี่จาก googling เกี่ยวกับคำถามนั้นจึงมี
ตัวเลือกอื่นคือการเปิดใช้งานสีและใช้ 'less -r' เป็นเพจเจอร์ของคุณ
git config --global color.ui true
git config --global core.pager 'less -r'
ผลลัพธ์นี้ใน
[color]
ui = true
[core]
pager = less -r
ใน ~ / .gitconfig ของคุณ
สำหรับข้อมูลเพิ่มเติมโปรดดูที่หนังสือ Pro Git
color.ui true
ไม่ได้กับเพจเจอร์ แต่color.ui always
ทำ สิ่งนี้อาจมีการเปลี่ยนแปลงตั้งแต่คำตอบถูกโพสต์
color.ui true
ทำงานกับ comands เช่นgit -p diff
และgit -p status
(โดยที่-p
หมายถึงless
ไพพ์เอาท์พุททั้งหมดเป็น $ PAGER โดยค่าเริ่มต้น) แม้สำหรับ git รุ่นเก่า , Git 1.7.1) แต่คุณยังคงต้องcolor.ui always
(ซึ่งบอกคอมไพล์รหัสสีเอาท์พุท "แม้ว่าการส่งออกเป็นท่อ (ไม่ TTY)") ที่จะได้รับการส่งออกสีเมื่อคุณระบุโดยตรงหรือgit status | less -r
git diff | less -r
เมื่อคุณระบุการเปลี่ยนเส้นทางผลลัพธ์อย่างชัดเจนคุณจะไม่เห็นผลลัพธ์หลังจากออกจากเพจเจอร์
ใช้ตัวเลือก-r
( --raw-control-chars
) เพื่อน้อยกว่าหรือยัง-R
(เฉพาะ ANSI escape sequences)
ฉันมีนามแฝงสำหรับสิ่งนี้ใน ~/.bashrc
alias rless='less -r'
alias less='less -r'
ไป เหตุผลใดที่จะไม่?
-r
เมื่อไม่จำเป็นอาจนำไปสู่ปัญหาการสร้างภาพ
ack
กับless -r
คุณสูญเสียกลับสายการบิน
\less
ถ้าการสร้างภาพข้อมูลเกิดความสับสน
less
อะไรเลยเพียงแค่ตั้งค่า$LESS
ตัวแปรสภาพแวดล้อมเป็นชุดธงที่คุณต้องการให้less
เช่นexport LESS='-MRq -z-2 -j2’
นอกจากนี้ยังtree
มีตัวเลือกในการบังคับให้สีบน:
tree -C | less -r
และเพื่อls
:
ls -lR --color | less -r
เพียงเพิ่มรุ่นอื่นใน "use less -r":
ใช้ตัวแปรสภาพแวดล้อมน้อยด้วยค่า r (หรือเพิ่ม r ไปยังสิ่งที่มันมีอยู่แล้ว)
เช่นที่ฉันใช้ใน. bashrc ของฉัน
export LESS=-Xr
(X หยุดหน้าจอจากการล้างเมื่อออกน้อยกว่า)
ในกรณีที่ทุกคนมีความสนใจในการ paging json ด้วยjq
และless
สามารถทำได้โดยใช้:
jq -C <jq args> file.json | less -R
เช่น
jq -C . file.json | less -R
ที่มา: https://github.com/stedolan/jq/issues/764#issuecomment-95355331
ฉันรู้ว่ามันเก่าและหลายคนได้ให้คำตอบที่ถูกต้องแล้ว แต่ฉันอยากจะเพิ่มว่ามันดีกว่าที่จะใช้เสมอless -R
และไม่ใช่less -r
ถ้าคุณต้องการสี ANSI เพียงอย่างเดียวเนื่องจาก-r
อาจมีปัญหาในการแสดงอักขระ
จากคู่มือ:
-r or --raw-control-chars
Causes "raw" control characters to be displayed. The default
is to display control characters using the caret notation; for
example, a control-A (octal 001) is displayed as "^A". Warn‐
ing: when the -r option is used, less cannot keep track of the
actual appearance of the screen (since this depends on how the
screen responds to each type of control character). Thus, var‐
ious display problems may result, such as long lines being
split in the wrong place.
-R or --RAW-CONTROL-CHARS
Like -r, but only ANSI "color" escape sequences are output in
"raw" form. Unlike -r, the screen appearance is maintained
correctly in most cases. ANSI "color" escape sequences are
sequences of the form:
ESC [ ... m