Как получить цветные страницы руководства под рыбой раковиной?

12

Кажется, есть способ заставить страницы справки отображаться в цвете (см. Здесь . Это включает в себя установку переменных среды, связанных с less, и добавление этих определений в .bashrc. Я пытался сделать то же самое config.fishдля shell рыбы, но не получил цветного вывода.

Как получить цветные страницы руководства в оболочке рыбы?

Эшвин Нанджаппа
источник
Возможный дубликат Как добавить экспорт в рыбу, как в .bashrc?
Пантера
@ bodhi.zazen Fish использует команду set вместо экспорта. Это не делало страницы справочника цветными. Отсюда мой вопрос выше :-)
Эшвин Нанджаппа
Вы должны «установить» эти переменные (из архива вики) на меньшее или (снова из архива вики) больше всего.
Пантера
@ bodhi.zazen Да. Я сделал это. Нет цвета на страницах
руководства

Ответы:

6

Вы можете установить конфигурацию с помощью следующих команд:

set -x LESS_TERMCAP_mb (printf "\033[01;31m")  
set -x LESS_TERMCAP_md (printf "\033[01;31m")  
set -x LESS_TERMCAP_me (printf "\033[0m")  
set -x LESS_TERMCAP_se (printf "\033[0m")  
set -x LESS_TERMCAP_so (printf "\033[01;44;33m")  
set -x LESS_TERMCAP_ue (printf "\033[0m")  
set -x LESS_TERMCAP_us (printf "\033[01;32m")  
eleven.i386
источник
7

Если вы хотите, чтобы эти цвета добавлялись только при просмотре справочных страниц, а не для всего, что вы просматриваете less, вы должны установить эти переменные в функции-обертке manвместо того, чтобы помещать их в свою config.fish.

Весь процесс заключается в создании нового файла в ~/.config/fish/functions/man.fish, а внутри него определения функции, manкоторая устанавливает необходимые переменные среды, затем вызывает исходное manиспользование с использованием commandаргументов с использованием $argv.

Это моя версия функции оболочки:

~/.config/fish/functions/man.fish
function man --description "wrap the 'man' manual page opener to use color in formatting"
  # based on this group of settings and explanation for them:
  # http://boredzo.org/blog/archives/2016-08-15/colorized-man-pages-understood-and-customized
  # converted to Fish shell syntax thanks to this page:
  # http://askubuntu.com/questions/522599/how-to-get-color-man-pages-under-fish-shell/650192

  # start of bold:
  set -x LESS_TERMCAP_md (set_color --bold red)
  # end of all formatting:
  set -x LESS_TERMCAP_me (set_color normal)

  # start of standout (inverted colors):
  #set -x LESS_TERMCAP_so (set_color --reverse)
  # end of standout (inverted colors):
  #set -x LESS_TERMCAP_se (set_color normal)
  # (no change – I like the default)

  # start of underline:
  #set -x LESS_TERMCAP_us (set_color --underline)
  # end of underline:
  #set -x LESS_TERMCAP_ue (set_color normal)
  # (no change – I like the default)

  command man $argv
end
Рори О'Кейн
источник
2
Огромное спасибо! И чтобы получить еще более подозрительный, вы можете использовать set_colorкоманду. например: set -x LESS_TERMCAP_md (set_color -o red),set -x LESS_TERMCAP_me (set_color normal)
Крис Кларк
3

Предполагая, что вы используете меньше как пейджер, поместите это в ~/.config/fish/config.fish:

set -x LESS_TERMCAP_mb (printf "\e[01;31m")
set -x LESS_TERMCAP_md (printf "\e[01;31m")
set -x LESS_TERMCAP_me (printf "\e[0m")
set -x LESS_TERMCAP_se (printf "\e[0m")
set -x LESS_TERMCAP_so (printf "\e[01;44;33m")
set -x LESS_TERMCAP_ue (printf "\e[0m")
set -x LESS_TERMCAP_us (printf "\e[01;32m")

Если вы видите, что \e[0mпри просмотре справочной страницы появляется сообщение «etc», попробуйте также добавить эту строку:

set -x LESS "-R"
bobbaluba
источник
Не работает. Я вижу строки \ e [01, когда я делаю "man ls".
Эшвин Нанджаппа
Странно, я считаю, что это было прямо из моего файла конфигурации. На самом деле я не пробовал это на Ubuntu, поскольку сам запускаю другой дистрибутив. Может быть, вы могли бы попробовать добавить set -x LESS="-R"в конец вашего конфига?
Боббалуба
Добавление того, что не помогло. Все еще вижу те же строки \ e [01 в manpage.
Эшвин Нанджаппа
1

Можно использовать set_colorвместо прямых последовательностей ANSI. Фактически, это позволяет вам использовать любой цвет, который вы хотите, используя 24-битный шестнадцатеричный цвет, например (set_color FF55AA).

set -x LESS_TERMCAP_mb (set_color brred)
set -x LESS_TERMCAP_md (set_color brred)
set -x LESS_TERMCAP_me (set_color normal)
set -x LESS_TERMCAP_se (set_color normal)
set -x LESS_TERMCAP_so (set_color -b blue bryellow)
set -x LESS_TERMCAP_ue (set_color normal)
set -x LESS_TERMCAP_us (set_color brgreen)
Конрад Боровски
источник