Faça com que o pager `most` lide adequadamente com as cores da entrada padrão

10

Como faço para o mostpager exibir corretamente as cores no texto recebido da entrada padrão?

Nota: Não tenho certeza se é um bug ou não most.

Não estou encontrando o mesmo problema com lesse more, somente com most, que de outra forma funciona como pager usado por man.

Não estou postando uma imagem e convido as pessoas a tentar isso (somente se você tiver 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

lesse moreexibir cores adequadamente, enquanto mostexibe cores com “lixo” adicional ^[[Kenvolvendo todas as áreas de texto coloridas.

Surpreendentemente, isso está OK:

$ (export PAGER=most; command man zip)

Estou faltando alguma coisa (a página de manual para mostnão ajudou), usando mal o comando ou é algo que devo reportar como um bug?

Uma observação sobre less(atualização):

Como Sparhawk mencionou em um comentário, lessnão funciona se não tiver a opção -R(ou --RAW-CONTROL-CHARS) ou -r(ou --raw-control-chars), que também pode ser definida na LESSvariável de ambiente.

E, de fato, primeiro procurei uma opção semelhante para most(mas não encontrei uma).

Atualizar

Todos têm problemas com texto codificado em UTF-8 colorido, não apenas most. No meu caso, o terminal está bem com isso, então esse não é o terminal. O mesmo texto UTF-8 sem cor é adequado para todos os três pagers, portanto, essa não é a codificação de caracteres.

Hibou57
fonte
1
FWIW lessnão funciona para mim. Eu preciso less -R.
Sparhawk
@Sparhawk, sim, desculpe, eu esqueço que tenho isso no meu perfil: export LESS="--hilite-search --LINE-NUMBERS --raw-control-chars". Eu pensei que havia uma opção semelhante para most, mas a página de manual não faz menção a isso. Nota: editarei minha postagem para informar sobre a LESSvariável de ambiente.
precisa saber é o seguinte

Respostas:

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 mim. By the way, eu apenas instalei mostpara descobrir isso e eu gosto. Obrigado.

   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
fonte
@ Hibou57 - existe alguma coisa nessa resposta que não responda à sua pergunta?
mikeserv
1
Eu estou encontrando isso também. Não entendo o comando nesta resposta e, quando o tento no meu sistema, recebo uma instância de mostnão exibir nada. A resposta também parece muito específica grep, e estou enfrentando o problema de exibir cores mais códigos de escape com mais do que apenas grep. - MacOS 10.12.6 com bash4.4.19(1)-release (x86_64-apple-darwin16.7.0)
adfaklsdjf