Faire en sorte que le pagineur `most` gère correctement les couleurs à partir de l'entrée standard

10

Comment faire pour que le mostpager affiche correctement les couleurs du texte reçu de l'entrée standard?

Remarque: je ne sais pas s'il s'agit ou non d'un bogue most.

Je ne rencontre pas le même problème avec lesset more, seulement avec most, qui fonctionne autrement bien comme pager utilisé par man.

Je ne poste pas d'image et j'invite les gens à l'essayer (uniquement si vous avez mostinstallé):

$ 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

lesset moreafficher correctement les couleurs, tout en mostaffichant les couleurs avec des «ordures» supplémentaires ^[[Kenveloppant toutes les zones de texte colorées.

Étonnamment, c'est OK:

$ (export PAGER=most; command man zip)

Suis-je en train de manquer quelque chose (la page de manuel mostn'a pas aidé), d'utiliser la commande à mauvais escient ou est-ce quelque chose que je devrais signaler comme bogue?

Une note sur less(mise à jour):

Comme Sparhawk l'a mentionné dans un commentaire, lessne fonctionne pas non plus si on ne lui donne pas l'option -R(ou --RAW-CONTROL-CHARS) ou -r(ou --raw-control-chars), qui peut également être définie dans la LESSvariable d'environnement.

Et en effet, j'ai d'abord cherché une option similaire pour most(mais je n'ai pas réussi à en trouver une).

Mettre à jour

Tous ont des problèmes avec le texte codé UTF-8 en couleur, pas seulement most. Dans mon cas, le terminal est très bien, donc ce n'est pas le terminal. Le même texte UTF-8 incolore convient aux trois téléavertisseurs, ce n'est donc pas le codage des caractères.

Hibou57
la source
1
FWIW lessne fonctionne pas pour moi. J'ai besoin less -R.
Sparhawk
@Sparhawk, oui, désolé, j'oublier que j'ai dans mon profil: export LESS="--hilite-search --LINE-NUMBERS --raw-control-chars". Je pensais qu'il y avait une option similaire pour most, mais la page de manuel ne fait aucune mention d'une telle chose. Remarque: je vais modifier mon message pour parler de la LESSvariable d'environnement.
Hibou57

Réponses:

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

Travaille pour moi. Soit dit en passant, je viens d'installer mostpour comprendre cela et je l'aime. Je vous remercie.

   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
         ...
mikeserv
la source
@ Hibou57 - y a-t-il quelque chose dans cette réponse qui ne répond pas à votre question?
mikeserv
1
Je rencontre cela aussi. Je ne comprends pas la commande dans cette réponse, et quand je l'essaye sur mon système, j'obtiens une instance de mostrien afficher. La réponse semble également très spécifique à grep, et je rencontre le problème de l'affichage couleur plus les codes d'échappement avec plus que juste grep. - MacOS 10.12.6 avec bash4.4.19(1)-release (x86_64-apple-darwin16.7.0)
adfaklsdjf