2011-02-08 13 views
5

Naprawdę lubię kolorowych stron podręcznika, które mogą zostały osiągnięte przezKolorowe strony podręczne z tcsh?

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' 

w .bashrc lub .zshrc. Moje pytanie brzmi: Jak wyeksportować te zmienne w tcsh? Muszę używać tcsh w pracy i nie mogę go uruchomić. Próbowałem wielu odmian, ale nic nie działało. Po prostu zastąpienie eksportu przez setenv i = "" nie rozwiązuje problemu. Ale to powinno jakoś zadziałać. Jeśli uruchamiam tcsh z mojego zsh z tym zestawem eksportowania, mogę również korzystać z kolorowych stron podręcznych w tcsh. Ale to brzydkie rozwiązanie.

+1

Prawdopodobnie będziesz proszę o to na superuser.com – dotalchemy

Odpowiedz

4

Problem polega na tym, że tcsh nie interpretuje sekwencji escape w nazwie zmiennej, więc zmienna środowiskowa kończy się na literalnym \E, gdy próbujesz ustawić ją za pomocą tcsh. Oto jeden sposób można obejść to, używając Basha interpretować sekwencje, choć to trochę brzydki:

% 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"'` 
+0

Zgadzam się, to trochę brzydkie, ale działa. Chociaż pozwoliłem, aby status pytania był otwarty, może otrzymamy rozwiązanie natywne. – skorgon

+1

Można to zrobić bez użycia bash (w zależności od ustawienia 'echo_style'. –

6

Sposobem na to, które pochodzi tcsh i jest przenośny do różnych typów terminali jest użycie echotc wbudowane polecenie:

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` 

Zobacz man 5 terminfo dla kodów termcap i kodów kolorystycznych.

md jest enter_bold_mode
me jest exit_attribute_mode
AF jest set_a_foreground
AB jest set_a_background

Przy okazji, aby to zrobić w bashu, należy użyć zewnętrznego narzędzia tput i zdolności terminfo nazw:

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) 
Powiązane problemy