Può trattenere meno l'output colorato?


Risposte:


361

Uso:

git diff --color=always | less -r

--color=alwaysè lì per dire gitai codici colore di output anche se l'output è una pipe (non una tty). Ed -rè lì per dire lessdi interpretare quei codici colore e altre sequenze di escape. Utilizzare solo -Rper codici colore ANSI.


3
@ ripper234. Con gits recenti, git config color.ui truedovrebbe essere sufficiente per ottenere un output colorato e per eseguire automaticamente un cercapersone per output lunghi.
Stéphane Gimenez,

4
Parallelamente a questo Q / A, watch --color 'git diff --cached --color=always'e i suoi amici possono portarti qualche ulteriore meraviglia.
Alois Mahdal,

27
Non stai usando less -Rmeglio (o export LESS=Rdentro /etc/profile)? Perché dovresti permettergli di visualizzare qualsiasi cosa tranne le sequenze di escape "color" ANSI? Inoltre, la pagina man diceWarning: 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
E se hai dimenticato di specificare l' -ropzione, puoi semplicemente digitare "-r" al lessprompt. Questo ovviamente funziona con la maggior parte o tutte le opzioni meno (ad esempio, -iper attivare l'ignorecase).
Haridsv,

3
grep --color=alwaysfunziona allo stesso modo. Questo non fa parte di questa domanda o risposta, ma sono arrivato qui da google su quella domanda, quindi eccola.
Frank Bryce,

57

Un'altra opzione sarebbe quella di abilitare i colori e usare 'less -r' come cercapersone.

git config --global color.ui true
git config --global core.pager 'less -r'

Questo risulta in

[color]
    ui = true
[core]
    pager = less -r

nel tuo ~ / .gitconfig

Per ulteriori informazioni, consultare il libro Pro Git .


7
Usando Git 2.11, ho scoperto che color.ui truenon funzionava con un cercapersone, ma funzionava color.ui always. Questo potrebbe essere cambiato da quando è stata pubblicata la risposta.
Tom Zych,

1
Questa opzione (per abilitare i colori e usare 'less -r' come pager di default) color.ui truefunziona con comandi come git -p diffe git -p status(dove -psignifica reindirizzare tutto l'output in $ PAGER, di default è less) anche per versioni piuttosto vecchie di git (per esempio , Git 1.7.1). Ma hai ancora bisogno color.ui always(che dice a git di produrre codici colore "anche se l'output è una pipe (non una tty)") per ottenere output colorati quando specifichi direttamente git status | less -ro git diff | less -r. Quando si specifica esplicitamente il reindirizzamento dell'output, non si vedrà l'output dopo essere uscito dal cercapersone.
Kenichi,

29

Utilizzare l' opzione -r( --raw-control-chars) per less o anche -R(solo sequenze di escape ANSI).

Ho un alias per questo in ~/.bashrc

alias rless='less -r'

7
In realtà l'ho appena fatto alias less='less -r'. Qualche motivo per non farlo?
ripper234,

3
@ ripper234: Ricordo vagamente che potrebbero esserci casi in cui l'uso -rquando non necessario può portare a problemi di visualizzazione.
enzotib,

1
Ad esempio, quando fai pipa ackcon less -rte perdi un ritorno in carrozza
Nuova Alessandria,

6
Puoi usarlo solo \lessse la visualizzazione è incasinata.
Brian Peterson,

4
Uh, non devi less$LESSlessexport LESS='-MRq -z-2 -j2’
aliasare

14

Ha anche treeun'opzione per forzare i colori su:

tree -C | less -r

E così via per ls:

ls -lR --color | less -r

10

Solo per aggiungere un'altra versione su "usa meno -r":

usa la variabile d'ambiente LESS con il valore r (o aggiungi r a qualunque cosa sia già)

ad esempio, come lo uso nel mio .bashrc

  export LESS=-Xr

(La X interrompe la cancellazione dello schermo quando si esce di meno)


1
sfortunatamente -X interrompe anche lo scorrimento del mouse per me: c
Xerus,


3

So che questo è vecchio e molti hanno già fornito la risposta giusta, ma vorrei aggiungere che è sempre meglio usare less -Re non less -rse hai solo bisogno di colori ANSI, in quanto -rpotrebbero causare problemi nella visualizzazione dei caratteri.

Dal manuale:

   -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
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.