Fai in modo che il pager `most` gestisca correttamente i colori dall'input standard


10

Come posso fare in modo che il mostpager visualizzi correttamente i colori nel testo ricevuto dall'input standard?

Nota: non sono sicuro che si tratti o meno di un bug most.

Non sto riscontrando lo stesso problema con lesse more, solo con most, che altrimenti funziona bene come un cercapersone usato da man.

Non sto pubblicando un'immagine e invito le persone a provare questo (solo se hai mostinstallato):

$ command apropos zip | command grep --color=always zip | command less
$ command apropos zip | command grep --color=always zip | command more
$ command apropos zip | command grep --color=always zip | command most

lesse morevisualizza correttamente i colori, mentre mostvisualizza i colori con “immondizia” aggiuntiva che ^[[Kavvolge tutte le aree di testo colorate.

Sorprendentemente, questo è OK:

$ (export PAGER=most; command man zip)

Mi sto perdendo qualcosa (la pagina di manuale per mostnon ha aiutato), uso improprio del comando o è qualcosa che dovrei segnalare come un bug?

Una nota su less(aggiornamento):

Come Sparhawk ha menzionato in un commento, lessnon funziona neanche se non viene fornita l'opzione -R(o --RAW-CONTROL-CHARS) o -r(o --raw-control-chars), che può anche essere impostata nella LESSvariabile d'ambiente.

E infatti, ho prima cercato un'opzione simile per most(ma non sono riuscito a trovarne uno).

Aggiornare

Tutti hanno problemi con il testo codificato UTF ‑ 8 a colori, non solo most. Nel mio caso, il terminale sta bene, quindi non è il terminale. Lo stesso testo UTF ‑ 8 non colorato va bene con tutti e tre i cercapersone, quindi non è la codifica dei caratteri.


1
FWIW lessnon funziona per me. Ho bisogno less -R.
Sparhawk,

@Sparhawk, sì, mi dispiace, non ricordo ho questo nel mio profilo: export LESS="--hilite-search --LINE-NUMBERS --raw-control-chars". Ho pensato che ci fosse un'opzione simile per most, ma la pagina del manuale non fa menzione di una cosa del genere. Nota: modificherò il mio post per parlare della LESSvariabile d'ambiente.
Hibou57,

Risposte:


1
man grep 2>/dev/null | 
GREP_COLORS=$(man grep 2>/dev/null | 
grep '^ *ms=01;31' -m1):ne \
grep '^ *GREP_COLORS *$\|^ *ne ' -A9 --color=always | 
most

Per me va bene. A proposito, ho appena installato mostper capirlo e mi piace. Grazie.

   GREP_COLORS
          Specifies  the  colors  and other attributes
          used  to  highlight  various  parts  of  the
          output.  Its value is a colon-separated list
          of    capabilities    that    defaults    to
          ms=01;31:mc=01;31:sl=:cx=:fn=35:ln=32:bn=32:se=36
          with the  rv  and  ne  boolean  capabilities
          omitted     (i.e.,     false).     Supported
          capabilities are as follows.

          ne     Boolean  value that prevents clearing
                 to the end of  line  using  Erase  in
                 Line  (EL) to Right (\33[K) each time
                 a  colorized  item  ends.   This   is
                 needed  on  terminals  on which EL is
                 not  supported.   It   is   otherwise
                 useful  on  terminals  for  which the
                 back_color_erase    (bce)     boolean
                 terminfo  capability  does not apply,
                 when the chosen highlight  colors  do
         ...

@ Hibou57 - c'è qualcosa in questa risposta che non risponde alla tua domanda?
Mikeserv,

1
Sto riscontrando anche questo. Non capisco il comando in questa risposta, e quando lo provo sul mio sistema ottengo un'istanza di mostnon visualizzare nulla. Anche la risposta sembra molto specifica grepe sto riscontrando il problema dei codici colore-display-plus-escape con più di un semplice grep. - MacOS 10.12.6 con bash4.4.19(1)-release (x86_64-apple-darwin16.7.0)
adfaklsdjf,
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.