Цветные страницы с tcsh? - PullRequest
       20

Цветные страницы с tcsh?

5 голосов
/ 08 февраля 2011

Мне действительно нравятся цветные страницы, которые могут быть достигнуты

export LESS_TERMCAP_mb=$'\E[01;31m'
export LESS_TERMCAP_md=$'\E[01;31m'
export LESS_TERMCAP_me=$'\E[0m'
export LESS_TERMCAP_se=$'\E[0m'
export LESS_TERMCAP_so=$'\E[01;44;33m'
export LESS_TERMCAP_ue=$'\E[0m'
export LESS_TERMCAP_us=$'\E[01;32m'

в вашем .bashrc или .zshrc. Мой вопрос: как мне экспортировать эти переменные в tcsh? Я должен использовать tcsh на работе и не могу заставить его работать. Я перепробовал множество вариантов, но ничего не получалось. Простая замена экспорта на setenv и = на "" не работает. Но это должно работать как-то. Если я запускаю tcsh из моего zsh с этим набором экспорта, я также могу наслаждаться цветными страницами в tcsh. Но это уродливый обходной путь.

Ответы [ 2 ]

6 голосов
/ 08 февраля 2011

Способ сделать это, свойственный tcsh и переносимый на различные типы терминалов, - это использовать встроенную команду echotc:

setenv LESS_TERMCAP_mb `echotc md; echotc AF 1`
setenv LESS_TERMCAP_md `echotc md; echotc AF 1`
setenv LESS_TERMCAP_me `echotc me`
setenv LESS_TERMCAP_se `echotc me`
setenv LESS_TERMCAP_so `echotc md; echotc AF 3; echotc AB 4`
setenv LESS_TERMCAP_ue `echotc me`
setenv LESS_TERMCAP_us `echotc md; echotc AF 2`

См. man 5 terminfo для termcap кодов и цветовых кодов.

md равен enter_bold_mode
me равен exit_attribute_mode
AF равен set_a_foreground
ABis set_a_background

Кстати, чтобы сделать это в Bash, используйте внешнюю утилиту tput и имена возможностей terminfo:

export LESS_TERMCAP_mb=$(tput bold; tput setaf 1)
export LESS_TERMCAP_md=$(tput bold; tput setaf 1)
export LESS_TERMCAP_me=$(tput sgr0)
export LESS_TERMCAP_se=$(tput sgr0)
export LESS_TERMCAP_so=$(tput bold; tput setaf 3; tput setab 4)
export LESS_TERMCAP_ue=$(tput sgr0)
export LESS_TERMCAP_us=$(tput bold; tput setaf 2)
4 голосов
/ 08 февраля 2011

Проблема в том, что tcsh не интерпретирует escape-последовательность в имени вашей переменной, поэтому переменная окружения заканчивается литералом \E, когда вы пытаетесь установить его с помощью tcsh.Вот один из способов обойти это, используя Bash для интерпретации escape-последовательностей, хотя это немного уродливо:

% setenv LESS_TERMCAP_md `bash -c 'echo -en "\e[01;31m"'`
% setenv LESS_TERMCAP_me `bash -c 'echo -en "\e[0m"'`
% setenv LESS_TERMCAP_se `bash -c 'echo -en "\e[0m"'`
% setenv LESS_TERMCAP_so `bash -c 'echo -en "\e[01;44;33m"'`
% setenv LESS_TERMCAP_ue `bash -c 'echo -en "\e[0m"'`
% setenv LESS_TERMCAP_us `bash -c 'echo -en "\e[01;32m"'`
...