Terkait tetapi tidak identik. Tautan lesshanya tentang .
Abel Cheung
Jawaban:
361
Menggunakan:
git diff --color=always | less -r
--color=alwaysada di sana untuk memberitahu gitkode warna output bahkan jika output adalah pipa (bukan tty). Dan -rapakah ada untuk memberitahu lessuntuk menafsirkan kode warna dan urutan pelarian lainnya. Gunakan hanya -Runtuk kode warna ANSI.
@ ripper234. Dengan git baru-baru ini, git config color.ui trueharus cukup untuk mendapatkan keluaran berwarna, dan secara otomatis menjalankan pager untuk keluaran lama.
Stéphane Gimenez
4
Sejalan dengan Tanya Jawab ini, watch --color 'git diff --cached --color=always'dan teman-temannya dapat memberi Anda beberapa kedahsyatan tambahan.
Alois Mahdal
27
Tidak menggunakan yang less -Rlebih baik (atau export LESS=Rdalam /etc/profile)? Mengapa Anda mengizinkannya menampilkan apa pun selain urutan pelarian "warna" ANSI? Juga, halaman manual mengatakanWarning: 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.
x-yuri
5
Dan jika Anda lupa menentukan -ropsi, Anda bisa mengetik "-r" di lessprompt. Ini tentu saja bekerja dengan sebagian besar atau lebih sedikit opsi (mis. -iUntuk mengaktifkan ignorecase).
haridsv
3
grep --color=alwaysbekerja dengan cara yang sama. Ini bukan bagian dari pertanyaan atau jawaban ini, tapi saya dapatkan di sini dari googling tentang pertanyaan itu jadi itu dia.
Frank Bryce
57
Pilihan lain adalah mengaktifkan warna dan menggunakan 'less -r' sebagai pager Anda.
Menggunakan Git 2.11, saya menemukan bahwa color.ui trueitu tidak bekerja dengan pager, tetapi color.ui alwaysberhasil. Ini mungkin telah berubah sejak jawabannya diposting.
Tom Zych
1
Opsi ini (untuk mengaktifkan warna dan menggunakan 'less -r' sebagai pager Anda secara default) dengan color.ui truemelakukan pekerjaan untuk perintah seperti git -p diffdan git -p status(di mana -partinya menyalurkan semua output ke $ PAGER, secara default itu less) bahkan untuk versi git yang agak lama (misalnya , Git 1.7.1). Tetapi Anda masih perlu color.ui always(yang memberitahu git untuk mengeluarkan kode warna "bahkan jika keluarannya berupa pipa (bukan tty)") untuk mendapatkan keluaran berwarna ketika Anda secara langsung menentukan git status | less -ratau git diff | less -r. Ketika Anda menentukan pengalihan output secara eksplisit, Anda tidak akan melihat output setelah keluar dari pager.
kenichi
29
Gunakan opsi -r( --raw-control-chars) untuk lebih sedikit, atau juga -R(hanya urutan pelarian ANSI).
Sebenarnya saya baru saja melakukannya alias less='less -r'. Ada alasan untuk tidak melakukannya?
ripper234
3
@ ripper234: Saya samar-samar ingat mungkin ada kasus ketika menggunakan -rketika tidak diperlukan dapat menyebabkan masalah visualisasi.
enzotib
1
Misalnya, ketika Anda mengirim pipa ackdengan less -rAnda kehilangan carriage return
New Alexandria
6
Anda bisa menggunakannya \lessjika visualisasi kacau.
Brian Peterson
4
Eh, Anda tidak perlu alias lessapa pun, cukup atur $LESSvariabel lingkungan ke set flag yang selalu ingin Anda berikan less, misalnyaexport LESS='-MRq -z-2 -j2’
Saya tahu ini sudah lama dan banyak yang sudah memberikan jawaban yang benar, tetapi saya ingin menambahkan bahwa itu selalu lebih baik untuk digunakan less -Rdan tidak less -rjika Anda hanya membutuhkan warna ANSI karena -rmasalah masalah dalam menampilkan karakter.
Dari manual:
-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
less
hanya tentang .Jawaban:
Menggunakan:
--color=always
ada di sana untuk memberitahugit
kode warna output bahkan jika output adalah pipa (bukan tty). Dan-r
apakah ada untuk memberitahuless
untuk menafsirkan kode warna dan urutan pelarian lainnya. Gunakan hanya-R
untuk kode warna ANSI.sumber
git config color.ui true
harus cukup untuk mendapatkan keluaran berwarna, dan secara otomatis menjalankan pager untuk keluaran lama.watch --color 'git diff --cached --color=always'
dan teman-temannya dapat memberi Anda beberapa kedahsyatan tambahan.less -R
lebih baik (atauexport LESS=R
dalam/etc/profile
)? Mengapa Anda mengizinkannya menampilkan apa pun selain urutan pelarian "warna" ANSI? Juga, halaman manual mengatakanWarning: 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
opsi, Anda bisa mengetik "-r" diless
prompt. Ini tentu saja bekerja dengan sebagian besar atau lebih sedikit opsi (mis.-i
Untuk mengaktifkan ignorecase).grep --color=always
bekerja dengan cara yang sama. Ini bukan bagian dari pertanyaan atau jawaban ini, tapi saya dapatkan di sini dari googling tentang pertanyaan itu jadi itu dia.Pilihan lain adalah mengaktifkan warna dan menggunakan 'less -r' sebagai pager Anda.
Ini menghasilkan
di ~ / .gitconfig Anda
Untuk informasi lebih lanjut, lihat buku Pro Git .
sumber
color.ui true
itu tidak bekerja dengan pager, tetapicolor.ui always
berhasil. Ini mungkin telah berubah sejak jawabannya diposting.color.ui true
melakukan pekerjaan untuk perintah sepertigit -p diff
dangit -p status
(di mana-p
artinya menyalurkan semua output ke $ PAGER, secara default ituless
) bahkan untuk versi git yang agak lama (misalnya , Git 1.7.1). Tetapi Anda masih perlucolor.ui always
(yang memberitahu git untuk mengeluarkan kode warna "bahkan jika keluarannya berupa pipa (bukan tty)") untuk mendapatkan keluaran berwarna ketika Anda secara langsung menentukangit status | less -r
ataugit diff | less -r
. Ketika Anda menentukan pengalihan output secara eksplisit, Anda tidak akan melihat output setelah keluar dari pager.Gunakan opsi
-r
(--raw-control-chars
) untuk lebih sedikit, atau juga-R
(hanya urutan pelarian ANSI).Saya memiliki alias untuk ini di
~/.bashrc
sumber
alias less='less -r'
. Ada alasan untuk tidak melakukannya?-r
ketika tidak diperlukan dapat menyebabkan masalah visualisasi.ack
denganless -r
Anda kehilangan carriage return\less
jika visualisasi kacau.less
apa pun, cukup atur$LESS
variabel lingkungan ke set flag yang selalu ingin Anda berikanless
, misalnyaexport LESS='-MRq -z-2 -j2’
Juga
tree
memiliki opsi untuk memaksa warna:Dan seterusnya untuk
ls
:sumber
Hanya untuk menambahkan versi lain pada "gunakan less -r":
gunakan variabel lingkungan KURANG dengan nilai r (atau tambahkan r untuk apa pun yang sudah ada)
misalnya, saat saya menggunakannya di .bashrc saya
(X menghentikan layar dari kliring ketika keluar lebih sedikit)
sumber
Dalam hal siapa pun tertarik untuk mencari json dengan
jq
danless
itu dapat dicapai dengan menggunakan:misalnya
Sumber: https://github.com/stedolan/jq/issues/764#issuecomment-95355331
sumber
Saya tahu ini sudah lama dan banyak yang sudah memberikan jawaban yang benar, tetapi saya ingin menambahkan bahwa itu selalu lebih baik untuk digunakan
less -R
dan tidakless -r
jika Anda hanya membutuhkan warna ANSI karena-r
masalah masalah dalam menampilkan karakter.Dari manual:
sumber