Консоль-раскарска — цветной man

Увидел на хабре запись под заголовком «Цветной man или как разукрасить вывод echo» автор которого цветном отображении манов так ничего и не сказал, зато о echo и собственно самих цветах наплел знатно. Комментировать на хабре не хочется, посему о раскрашивании скажу я.
Т.е. проведу краткий экскурс с пояснениями...

1) Программа в которой отображается страницы экранной документации aka man указана в переменной окружения $PAGER и указать в неё можно хоть vim (т.е. vimpager). Есть ещё $MANPAGER считывающая если переменная $PAGER не установлена.
По умолчанию программа man использует less (а именно команду less -s).

2) Расцветка зависит от программы указанной в $PAGER/$MANPAGER.

Рассказывать обо всех возможных программах для просмотра nroff/groff текста используемого в манах я не буду, расскажу о том как раскрасить умолчальный less и используемый мной most

less
Не имеет конфигурационного файла, зато читает переменные окружения.
export LESS_TERMCAP_mb=$'\E[01;31m'       # начала мигающего
export LESS_TERMCAP_md=$'\E[01;38;5;74m'  # начало жирного текста
export LESS_TERMCAP_me=$'\E[0m'           # окончание
export LESS_TERMCAP_so=$'\E[38;5;246m'    # начала текста в инфобоксе
export LESS_TERMCAP_se=$'\E[0m'           # конец его
export LESS_TERMCAP_us=$'\E[04;38;5;146m' # начало подчеркнутого
export LESS_TERMCAP_ue=$'\E[0m'           # конец подчеркнутого
Добавив сии строки в bashrc/zshrc мы увидем уже цветной ман. Можно и сделать алиас на man с этими переменными дыбы они без толку не висели. Значения цветов описыны в man dir_colors (когда-то частично и я описывал в своем zshrc), ну и в помянутом посте на хабре о значении цветов написано прилично, даже более чем.
Кстати, на хабре, несмотря на всю бестолковость топика, в комментариях приведен наглядный скрипт-памятка который привожу и я в конце поста, ибо пригодиться он может многим.

most
most уже имеет файл настроек — ~/.mostrc в котором помимо цветов можно настроить и сочетания клавиш, но сейчас мы о цветах... Вот мой ~/.mostrc
color normal gray default
color status white lightgray
color underline green default
color overstrike blue default
Здесь уже всё наглядно и понятно. color объект цвет_текста цвет_фона, где объекта всего четыре — underline (подчеркнутый текст), overstrike (якобы жирный), status (статусная строка) и normal (всё остальное).

Часто используемый more, к сожалению не разукрасить...

Вот такое вот пост у меня родился из-за не оправдавшего себя заголовка с хабра.

Обещанная наглядная памятка в виде скрипта
#!/bin/bash
echo -e "\033[00;30m 00;30m \033[00m \033[02;30m 02;30m \033[00m \033[01;30m 01;30m \033[00m \033[01;40m 01;40m \033[00m"
echo -e "\033[00;31m 00;31m \033[00m \033[02;31m 02;31m \033[00m \033[01;31m 01;31m \033[00m \033[01;41m 01;41m \033[00m"
echo -e "\033[00;32m 00;32m \033[00m \033[02;32m 02;32m \033[00m \033[01;32m 01;32m \033[00m \033[01;42m 01;42m \033[00m"
echo -e "\033[00;33m 00;33m \033[00m \033[02;33m 02;33m \033[00m \033[01;33m 01;33m \033[00m \033[01;43m 01;43m \033[00m"
echo -e "\033[00;34m 00;34m \033[00m \033[02;34m 02;34m \033[00m \033[01;34m 01;34m \033[00m \033[01;44m 01;44m \033[00m"
echo -e "\033[00;35m 00;35m \033[00m \033[02;35m 02;35m \033[00m \033[01;35m 01;35m \033[00m \033[01;45m 01;45m \033[00m"
echo -e "\033[00;36m 00;36m \033[00m \033[02;36m 02;36m \033[00m \033[01;36m 01;36m \033[00m \033[01;46m 01;46m \033[00m"
echo -e "\033[00;37m 00;37m \033[00m \033[02;37m 02;37m \033[00m \033[01;37m 01;37m \033[00m \033[01;47m 01;47m \033[00m"


PS. Напомню что про разукрашивании консоли я уже немного писал, в частности «Цвета в консоли zsh» и «Разукрашиваем вывод команд с помощью grc», может быть в них кто увидит для себя что-то полезное (grc рекомендую!)

PPS. alparo, смотрю по истории — у нас с тобой по этому поводу ещё в декабре беседа была)
analizer 11-05-2011
а vimmanpager пошто забыл? там боевая раскраска искаропке
muhas 11-05-2011
Как забыл? указать в неё можно хоть vim (т.е. vimpager) или vimmanpager это что-то другое?
но как вим разукрашивать это уже другое дело - это не мелкий пост-памятку писать. Да и не знаю я вима в должной мере
analizer 11-05-2011
да, в MANPAGER надо указывать именно vimmanpager. просто vimpager не раскрасит ман.
muhas 11-05-2011
zsh: command not found: vimmanpager
PAGER=vimpager и ман цветной - c каким-то коротеньким конфигом не помню откуда стыренным (но о цветах, кроме set background=dark ничего нету)
имя раздела желтое, некоторые опции 00;35m, так же 00;36m имеется местами и подзаголовки 01;36m
nick 11-05-2011
эти эскейп последоватедьности терминало специфичны. поэтому наш выбор tput
muhas 11-05-2011
согласен, но в bash/zsh работать, а что ещё надо простому аскетичному линуксоиду который читаем маны в консоли а не через какой-нить xman или гномокеды...
на хабре по ссылке о tput написано немного.
у меня в zsh так вообще autoload colors && colors выручает неплохо...
Slava 11-05-2011
Добрый день. Спасибо за пост, для меня он был полезен.
Памятка для пользователей Emacs. Для раскраски man-страниц в Emacs необходимо установить переменные Man-overstrike-face, Man-underline-face и Man-reverse-face, например:

(setq Man-fontify-manpage-flag t)

(make-face 'my-man-overstrike)
(set-face-foreground 'my-man-overstrike "blue")
(set-face-bold-p 'my-man-overstrike t)
(setq Man-overstrike-face 'my-man-overstrike)

(make-face 'my-man-underline)
(set-face-foreground 'my-man-underline "green")
(set-face-underline-p 'my-man-underline t)
(setq Man-underline-face 'my-man-underline)

Эти изменения можно сделать и с помощью M-x customize-group RET man RET
user 11-05-2011
А можно ли подсветку для tail сделать? Удобно очень в tail -f логи динамически смотреть, поэтому было бы круто, если бы они были с подсветочкой.
muhas 11-05-2011
grc разукрашивает tail (grc tail -f)
а его я уже малость описывал тынц
nic 11-06-2011
Slava, а зачем их утанавливать?
Slava 11-06-2011
nic, чтобы раскрасить man-страницы, отображаемые Emacs'ом. Или вопрос в чем-то другом состоял?
pavlinux 11-06-2011
Я у себя в .bashrc вот такой костыль нашёл

alias man="env PAGER=less \
LESS_TERMCAP_md=$'\E[1;36m' \
LESS_TERMCAP_me=$'\E[22;39m' \
LESS_TERMCAP_so=$'\E[44;37m' \
LESS_TERMCAP_se=$'\E[49;39m' \
LESS_TERMCAP_us=$'\E[4;33m' \
LESS_TERMCAP_ue=$'\E[24;39m' \
man"
Прохожий 11-06-2011
>сочетания клавишь
>клавишь

Граммар-наци негодуют!
RRRRAGE!!
muhas 11-06-2011
каюсь, грешен :(
поправил.
anon 11-06-2011
хм, а разве по умолчанию most не раскрашивает маны? за расцветку less спасибо, собственно most и использовал только из-за того, что он маны в цвете выводит.
Мамантег 11-06-2011
Отлчино, Мой main доволен =)
dnua 11-06-2011
Не плохие рюшики.
anon 11-08-2011
ахтыж ебаный ты нахуй! молодец мухас! как ни зайду на твою страничку - всегда есть, что полезное почерпнуть. спасибо тебе.
serge 12-01-2012
У меня в консоли мигает, в иксах нет. Мигание мне очень не нравится, как его убрать?
muhas 12-01-2012
serge, что мигает-то? если в less то LESS_TERMCAP_mb поправить на тот цвет-начертание что нравится тебе...
serge 12-01-2012
Мигают, в частности, заголовки - Name Synopsys и т.д. Так должно быть?
В иксах (gnome-terminal,xterm) есть только раскраска.Я пытался убрать строку "export LESS_TERMCAP_mb=$'\E[01;31m' # начала мигающего" - это не помогло.
muhas 12-01-2012
\E[01;31m замени на другой цвет, к примеру на \E[01;38;5;74m
serge 12-01-2012
Не помогло. Как я понял , переменная LESS_TERMCAP_mb задает цвет для слов с аттрибутом(?) "мерцающий". Т.е. это мерцание заложено в man-page? И вообще, мерцает только у меня? У тебя нет?
muhas 12-01-2012
у меня даже less нет =)
поменяй другие значения, я сейчас уже не помню у заголовков какое значение. у тебя ман через less?
у меня через most(но в нем на заголовок сразу из консоли не перейти)
serge 12-01-2012
Да, у меня less. Ладно, поковыряю еще сам. Да и в консоли бываешь не часто, это я так, для порядка начал копать.