Haga que la mayoría de los buscapersonas manejen adecuadamente los colores de la entrada estándar

10

¿Cómo hago que el mostlocalizador muestre correctamente los colores en el texto recibido de la entrada estándar?

Nota: No estoy seguro de si es o no un error most.

No estoy encontrando el mismo problema con , lessy moresolo con most, que de lo contrario funciona muy bien como un localizador utilizado por man.

No estoy publicando una imagen, e invito a las personas a probar esto (solo si lo has mostinstalado):

$ 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

lessy moremuestra correctamente los colores, mientras que mostmuestra colores con "basura" adicional que ^[[Kenvuelve todas las áreas de texto de color.

Sorprendentemente, esto está bien:

$ (export PAGER=most; command man zip)

¿Me estoy perdiendo algo (la página del manual mostno ayudó), mal uso del comando o es algo que debo informar como un error?

Una nota sobre less(actualización):

Como Sparhawk mencionó en un comentario, lesstampoco funciona si no se le da la opción -R(o --RAW-CONTROL-CHARS) o -r(o --raw-control-chars), que también se puede establecer en la LESSvariable de entorno.

Y, de hecho, primero busqué una opción similar para most(pero no pude encontrar una).

Actualizar

Todos tienen problemas con el texto codificado en color UTF-8, no solo most. En mi caso, el terminal está bien, así que ese no es el terminal. El mismo texto UTF ‑ 8 sin color está bien con los tres buscapersonas, por lo que esa no es la codificación de caracteres.

Hibou57
fuente
1
FWIW lessno funciona para mí. Necesito less -R.
Sparhawk
@Sparhawk, sí, lo siento, se me olvida que tengo esto en mi perfil: export LESS="--hilite-search --LINE-NUMBERS --raw-control-chars". Pensé que había una opción similar para most, pero la página del manual no menciona tal cosa. Nota: editaré mi publicación para contar sobre la LESSvariable de entorno.
Hibou57

Respuestas:

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

Funciona para mi. Por cierto, acabo de instalar mostpara resolver esto y me gusta. Gracias.

   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
fuente
@ Hibou57: ¿hay algo en esta respuesta que no responda a su pregunta?
mikeserv
1
Estoy encontrando esto también. No entiendo el comando en esta respuesta, y cuando lo pruebo en mi sistema obtengo una instancia de mostno mostrar nada. La respuesta también parece muy específica grep, y estoy experimentando el problema de color-display-plus-escape-codes con algo más que grep. - MacOS 10.12.6 con bash4.4.19(1)-release (x86_64-apple-darwin16.7.0)
adfaklsdjf