Tôi có thể nhận được ít hơn không đơn sắc đầu ra của nó?
Ví dụ, đầu ra từ git diff
được tô màu, nhưng git diff | less
không.
less
chỉ.
Tôi có thể nhận được ít hơn không đơn sắc đầu ra của nó?
Ví dụ, đầu ra từ git diff
được tô màu, nhưng git diff | less
không.
less
chỉ.
Câu trả lời:
Sử dụng:
git diff --color=always | less -r
--color=always
có để nói git
với mã màu đầu ra ngay cả khi đầu ra là một đường ống (không phải là tty). Và -r
có để nói less
để giải thích các mã màu và các chuỗi thoát khác. Chỉ sử dụng -R
cho mã màu ANSI.
git config color.ui true
phải đủ để có được đầu ra màu và để tự động chạy một máy nhắn tin cho đầu ra dài.
watch --color 'git diff --cached --color=always'
và bạn bè của nó có thể mang đến cho bạn một số điều tuyệt vời.
less -R
tốt hơn (hoặc export LESS=R
trong /etc/profile
)? Tại sao bạn lại cho phép nó hiển thị bất cứ thứ gì ngoại trừ các chuỗi thoát "màu" ANSI? Ngoài ra, trang người đàn ông nóiWarning: 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
tùy chọn, bạn chỉ cần gõ "-r" tại less
dấu nhắc. Điều này tất nhiên hoạt động với hầu hết hoặc tất cả các tùy chọn ít hơn (nghĩa là -i
để bật ignorecase).
grep --color=always
hoạt động theo cùng một cách. Đây không phải là một phần của câu hỏi hoặc câu trả lời này, nhưng tôi đã đến đây từ việc googling về câu hỏi đó vì vậy nó có.
Một tùy chọn khác sẽ là bật màu và sử dụng 'less -r' làm máy nhắn tin của bạn.
git config --global color.ui true
git config --global core.pager 'less -r'
Kết quả này trong
[color]
ui = true
[core]
pager = less -r
trong ~ / .gitconfig của bạn
Để biết thêm thông tin xem sách Pro Git .
color.ui true
nó không hoạt động với máy nhắn tin, nhưng color.ui always
đã làm. Điều này có thể đã thay đổi kể từ khi câu trả lời được đăng.
color.ui true
công việc cho các lệnh như git -p diff
và git -p status
( -p
có nghĩa là chuyển tất cả đầu ra thành $ PAGER, theo mặc định less
) ngay cả đối với các phiên bản git khá cũ (ví dụ: , Git 1.7.1). Nhưng bạn vẫn cần color.ui always
(thông báo cho git biết mã màu đầu ra "ngay cả khi đầu ra là một đường ống (không phải là tty)") để có được đầu ra màu khi bạn trực tiếp chỉ định git status | less -r
hoặc git diff | less -r
. Khi bạn chỉ định rõ ràng chuyển hướng đầu ra, bạn sẽ không thấy đầu ra sau khi thoát khỏi máy nhắn tin.
Sử dụng tùy chọn -r
( --raw-control-chars
) để ít hơn hoặc cũng có thể -R
(chỉ các chuỗi thoát ANSI).
Tôi có một bí danh cho điều này trong ~/.bashrc
alias rless='less -r'
alias less='less -r'
. Có lý do nào không?
-r
khi không cần thiết có thể dẫn đến vấn đề hình dung.
ack
cùng less -r
bạn bị mất tiền vận chuyển
\less
nếu trực quan hóa gây rối.
less
để bất cứ điều gì, chỉ cần thiết lập các $LESS
biến môi trường với tập hợp các cờ bạn luôn muốn cung cấp cho less
, ví dụ nhưexport LESS='-MRq -z-2 -j2’
Cũng tree
có một tùy chọn để buộc màu sắc trên:
tree -C | less -r
Và như vậy cho ls
:
ls -lR --color | less -r
Chỉ cần thêm một phiên bản khác vào "sử dụng ít -r":
sử dụng biến môi trường LESS với giá trị r (hoặc thêm r vào bất cứ thứ gì nó đã có)
ví dụ: khi tôi sử dụng nó trong .bashrc của tôi
export LESS=-Xr
(X dừng màn hình xóa khi thoát ít hơn)
Trong trường hợp bất cứ ai quan tâm đến việc phân trang json với jq
và less
nó có thể đạt được bằng cách sử dụng:
jq -C <jq args> file.json | less -R
ví dụ
jq -C . file.json | less -R
Nguồn: https://github.com/stedolan/jq/issues/764#issuecomment-95355331
Tôi biết điều này đã cũ và nhiều người đã cung cấp câu trả lời đúng nhưng tôi muốn nói thêm rằng nó luôn luôn tốt hơn để sử dụng less -R
và không phải less -r
nếu bạn chỉ cần màu ANSI vì -r
có thể gặp vấn đề trong việc hiển thị các ký tự.
Từ hướng dẫn:
-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