Зробіть так, щоб пейджер "більшості" правильно обробляв кольори зі стандартного вводу


10

Як зробити так, щоб mostпейджер правильно відображав кольори в тексті, отриманому зі стандартного вводу?

Примітка. Я не впевнений, чи це помилка чи ні most.

Я не стикаюся з тим самим питанням lessі more, лише з тим most, що інакше чудово працює як пейджер, яким користується man.

Я не публікую зображення та пропоную людям спробувати це (лише якщо ви mostвстановили):

$ 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

lessі moreналежним чином відображати кольори, а mostкольори відображати з додатковим "сміттям", що ^[[Kобгортає всі кольорові текстові області.

Дивно, але це все в порядку:

$ (export PAGER=most; command man zip)

Я щось пропускаю (сторінка керівництва для mostне допомогла), неправильно використовую команду чи це щось, про що я повинен повідомити про помилку?

Примітка про less(оновлення):

Як згадував Sparhawk у коментарі, lessвін не працює, якщо йому не надано параметр -R(або --RAW-CONTROL-CHARS) або -r(або --raw-control-chars), який також може бути встановлений у LESSзмінній оточення.

І справді, я спершу шукав подібний варіант most(але не знайшов).

Оновлення

Усі мають проблеми з кольоровим текстом, закодованим UTF-8, а не лише most. У моєму випадку термінал із цим добре, тож це не термінал. Один і той же непофарбований текст UTF-8 чудово підходить для всіх трьох пейджерів, тому це не кодування символів.


1
FWIW lessне працює для мене. Мені потрібно less -R.
Sparhawk

@Sparhawk, так, вибачте, я забув , у мене є це в моєму профілі: export LESS="--hilite-search --LINE-NUMBERS --raw-control-chars". Я думав, що існує подібний варіант для most, але на сторінці керівництва про таке не йдеться. Примітка. Я відредагую свою публікацію, щоб розповісти про LESSзмінну середовища.
Hibou57

Відповіді:


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

Працює для мене. До речі, я щойно встановив, mostщоб це зрозуміти, і мені це подобається. Дякую.

   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 - чи є щось у цій відповіді, що не відповідає на ваше запитання?
mikeserv

1
І з цим я стикаюся. Я не розумію команду в цій відповіді, і коли я пробую її в своїй системі, я отримую примірник mostнічого не відображати. Відповідь також здається дуже специфічною grep, і я відчуваю проблему кольорових дисплей-плюс-втечі-коди, які мають більше ніж просто греп. - MacOS 10.12.6 з bash4.4.19(1)-release (x86_64-apple-darwin16.7.0)
adfaklsdjf
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.