Powiązany, ale nie identyczny problem. Link dotyczy lesstylko.
Abel Cheung
Odpowiedzi:
359
Posługiwać się:
git diff --color=always | less -r
--color=alwaysjest po to, aby powiedzieć, gitaby wyświetlać kody kolorów, nawet jeśli wyjście jest potokiem (a nie tty). I -rjest po to, lessaby zinterpretować te kody kolorów i inne sekwencje specjalne. Używaj tylko -Rdla kodów kolorów ANSI.
@ ripper234. W przypadku ostatnich gitów git config color.ui truepowinno wystarczyć, aby uzyskać kolorowe wydruki i automatycznie uruchomić pager dla długich wydruków .
Stéphane Gimenez
4
Równolegle do tego pytania / odpowiedzi, watch --color 'git diff --cached --color=always'a jego przyjaciele mogą przynieść ci dodatkową niesamowitość.
Alois Mahdal
27
Czy nie używasz less -Rlepszego (lub export LESS=Rw /etc/profile)? Dlaczego miałbyś pozwolić, aby wyświetlał cokolwiek innego niż sekwencje specjalne ANSI „kolorowe”? Ponadto strona podręcznika mówiWarning: 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
A jeśli zapomniałeś podać -ropcję, możesz po prostu wpisać „-r” w lesswierszu polecenia. To oczywiście działa z większością lub wszystkimi mniejszymi opcjami (tj., -iAby włączyć ignorowanie).
haridsv
3
grep --color=alwaysdziała w ten sam sposób. To nie jest część tego pytania ani odpowiedzi, ale dotarłem tutaj z Google'a na temat tego pytania, więc jest.
Frank Bryce,
57
Inną opcją byłoby włączenie kolorów i użycie „mniej -r” jako pager.
Korzystając z Git 2.11, okazało się, że color.ui truenie działało to z pageriem, ale działało color.ui always. To mogło się zmienić od czasu opublikowania odpowiedzi.
Tom Zych
1
Ta opcja (aby włączyć kolory i domyślnie używać „mniej -r” jako pager) color.ui truedziała z komendami takimi jak git -p diffi git -p status(gdzie -poznacza, że wszystkie dane wyjściowe są przesyłane do $ PAGER, domyślnie to jest less) nawet dla dość starych wersji git (na przykład , Git 1.7.1). Ale nadal potrzebujesz color.ui always(co mówi gitowi, aby wypisał kody kolorów „nawet jeśli wyjście jest potokiem (nie tty)”), aby uzyskać kolorowe wydruki, gdy bezpośrednio określisz git status | less -rlub git diff | less -r. Gdy jawnie określisz przekierowanie wyjścia, nie zobaczysz wyniku po wyjściu z pagera.
kenichi
29
Użyj opcji -r( --raw-control-chars), aby zmniejszyć, lub też -R(tylko sekwencje specjalne ANSI).
Wiem, że to stare i wielu już udzieliło właściwej odpowiedzi, ale chciałbym dodać, że zawsze lepiej jest używać, less -Ra nie, less -rjeśli potrzebujesz tylko kolorów ANSI, ponieważ -rmogą to powodować problemy z wyświetlaniem znaków.
Z instrukcji:
-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
tylko.Odpowiedzi:
Posługiwać się:
--color=always
jest po to, aby powiedzieć,git
aby wyświetlać kody kolorów, nawet jeśli wyjście jest potokiem (a nie tty). I-r
jest po to,less
aby zinterpretować te kody kolorów i inne sekwencje specjalne. Używaj tylko-R
dla kodów kolorów ANSI.źródło
git config color.ui true
powinno wystarczyć, aby uzyskać kolorowe wydruki i automatycznie uruchomić pager dla długich wydruków .watch --color 'git diff --cached --color=always'
a jego przyjaciele mogą przynieść ci dodatkową niesamowitość.less -R
lepszego (lubexport LESS=R
w/etc/profile
)? Dlaczego miałbyś pozwolić, aby wyświetlał cokolwiek innego niż sekwencje specjalne ANSI „kolorowe”? Ponadto strona podręcznika mówiWarning: 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
opcję, możesz po prostu wpisać „-r” wless
wierszu polecenia. To oczywiście działa z większością lub wszystkimi mniejszymi opcjami (tj.,-i
Aby włączyć ignorowanie).grep --color=always
działa w ten sam sposób. To nie jest część tego pytania ani odpowiedzi, ale dotarłem tutaj z Google'a na temat tego pytania, więc jest.Inną opcją byłoby włączenie kolorów i użycie „mniej -r” jako pager.
To skutkuje
w twoim ~ / .gitconfig
Aby uzyskać więcej informacji, zobacz książkę Pro Git .
źródło
color.ui true
nie działało to z pageriem, ale działałocolor.ui always
. To mogło się zmienić od czasu opublikowania odpowiedzi.color.ui true
działa z komendami takimi jakgit -p diff
igit -p status
(gdzie-p
oznacza, że wszystkie dane wyjściowe są przesyłane do $ PAGER, domyślnie to jestless
) nawet dla dość starych wersji git (na przykład , Git 1.7.1). Ale nadal potrzebujeszcolor.ui always
(co mówi gitowi, aby wypisał kody kolorów „nawet jeśli wyjście jest potokiem (nie tty)”), aby uzyskać kolorowe wydruki, gdy bezpośrednio określiszgit status | less -r
lubgit diff | less -r
. Gdy jawnie określisz przekierowanie wyjścia, nie zobaczysz wyniku po wyjściu z pagera.Użyj opcji
-r
(--raw-control-chars
), aby zmniejszyć, lub też-R
(tylko sekwencje specjalne ANSI).Mam na to alias
~/.bashrc
źródło
alias less='less -r'
. Jest jakiś powód, aby tego nie robić?-r
gdy nie jest potrzebne, może prowadzić do problemu z wizualizacją.ack
zeless -r
sobą, tracisz zwrot karetki\less
jeśli wizualizacja się nie powiedzie.less
niczego$LESS
less
export LESS='-MRq -z-2 -j2’
Również
tree
ma możliwość wymuszenia na kolory:I tak dalej dla
ls
:źródło
Aby dodać kolejną wersję na „use less -r”:
użyj zmiennej środowiskowej LESS z wartością r (lub dodaj r do tego, co już jest)
np. kiedy używam go w moim .bashrc
(X zatrzymuje czyszczenie ekranu przy wychodzeniu mniej)
źródło
W przypadku, gdy ktoś jest zainteresowany stronicowaniem JSON
jq
iless
można to osiągnąć za pomocą:na przykład
Źródło: https://github.com/stedolan/jq/issues/764#issuecomment-95355331
źródło
Wiem, że to stare i wielu już udzieliło właściwej odpowiedzi, ale chciałbym dodać, że zawsze lepiej jest używać,
less -R
a nie,less -r
jeśli potrzebujesz tylko kolorów ANSI, ponieważ-r
mogą to powodować problemy z wyświetlaniem znaków.Z instrukcji:
źródło