Kann ich weniger bekommen, um seine Ausgabe nicht zu monochromen?
ZB ist die Ausgabe von git diff
farbig, aber git diff | less
nicht.
less
nur von.
Kann ich weniger bekommen, um seine Ausgabe nicht zu monochromen?
ZB ist die Ausgabe von git diff
farbig, aber git diff | less
nicht.
less
nur von.
Antworten:
Verwenden:
git diff --color=always | less -r
--color=always
Gibt an, welche git
Farbcodes ausgegeben werden sollen, auch wenn es sich bei der Ausgabe um eine Pipe handelt (nicht um eine Tty). Und -r
gibt es zu erzählen less
, diese Farbcodes und andere Escape-Sequenzen zu interpretieren. Verwenden Sie -R
für die ANSI - Farbcodes nur.
git config color.ui true
sollte es ausreichen, eine farbige Ausgabe zu erhalten und bei langen Ausgaben automatisch einen Pager zu starten.
watch --color 'git diff --cached --color=always'
und seinen Freunden können Sie einige zusätzliche Beeindruckung bringen.
less -R
besser (oder export LESS=R
in /etc/profile
)? Warum sollten Sie zulassen, dass alles andere als ANSI-Escape-Sequenzen in "Farbe" angezeigt werden? Außerdem steht auf der ManpageWarning: 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
Option anzugeben , können Sie an der less
Eingabeaufforderung einfach "-r" eingeben. Dies funktioniert natürlich mit den meisten oder allen weniger Optionen (z. B. -i
Ignorieren von Groß- und Kleinschreibung).
grep --color=always
funktioniert genauso. Dies ist nicht Teil dieser Frage oder Antwort, aber ich bin hierher gekommen, weil ich über diese Frage gegoogelt habe.
Eine andere Möglichkeit wäre, Farben zu aktivieren und 'less -r' als Pager zu verwenden.
git config --global color.ui true
git config --global core.pager 'less -r'
Das führt zu
[color]
ui = true
[core]
pager = less -r
in deiner ~ / .gitconfig
Weitere Informationen finden Sie im Pro Git-Buch .
color.ui true
dies bei einem Pager nicht funktioniert hat, color.ui always
jedoch. Dies hat sich möglicherweise geändert, seit die Antwort veröffentlicht wurde.
color.ui true
funktioniert mit Befehlen wie git -p diff
und git -p status
(wobei -p
bedeutet, dass die gesamte Ausgabe standardmäßig in $ PAGER umgeleitet wird less
) auch für ältere Versionen von git (zum Beispiel) Git 1.7.1). Aber Sie müssen immer noch color.ui always
(was git anweist, Farbcodes auszugeben "auch wenn die Ausgabe eine Pipe ist (keine tty)"), um eine farbige Ausgabe zu erhalten, wenn Sie direkt git status | less -r
oder angeben git diff | less -r
. Wenn Sie die Ausgabeumleitung explizit angeben, wird die Ausgabe nach dem Beenden des Pagers nicht angezeigt.
Verwenden Sie die Option -r
( --raw-control-chars
) zu weniger oder auch -R
(nur ANSI-Escape-Sequenzen).
Ich habe einen Alias dafür in ~/.bashrc
alias rless='less -r'
alias less='less -r'
. Irgendein Grund, es nicht zu tun?
-r
wenn sie nicht benötigt wird, zu Visualisierungsproblemen führen kann.
ack
mit Ihnen Pipe less -r
verlieren einen Wagenrücklauf
\less
wenn die Visualisierung durcheinander kommt.
less
angeben, setzen Sie die $LESS
Umgebungsvariable einfach auf den Satz von Flags, den Sie immer bereitstellen möchten less
, z. B.export LESS='-MRq -z-2 -j2’
Hat tree
auch eine Option, um Farben zu erzwingen:
tree -C | less -r
Und so weiter für ls
:
ls -lR --color | less -r
Nur um eine weitere Version für "use less -r" hinzuzufügen:
benutze die Umgebungsvariable LESS mit dem Wert r (oder füge r zu dem hinzu, was es bereits ist)
zB wie ich es in meiner .bashrc verwende
export LESS=-Xr
(Das X verhindert, dass der Bildschirm beim Verlassen von weniger gelöscht wird.)
Falls jemand Interesse daran hat, einen Json mit zu pagen, jq
und less
dies kann erreicht werden mit:
jq -C <jq args> file.json | less -R
z.B
jq -C . file.json | less -R
Quelle: https://github.com/stedolan/jq/issues/764#issuecomment-95355331
Ich weiß, dass dies alt ist und viele bereits die richtige Antwort gegeben haben, aber ich möchte hinzufügen, dass es immer besser ist, ANSI-Farben zu verwenden less -R
und nicht, less -r
wenn Sie nur ANSI-Farben benötigen, da -r
dies zu Problemen bei der Anzeige der Zeichen führen kann.
Aus dem Handbuch:
-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