2011-02-08 8 views
5

me gusta mucho las páginas de manual de colores que puede se consiguen mediante¿Páginas de manual coloreadas con 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' 

en su .bashrc o .zshrc. Mi pregunta es: ¿Cómo exporto estas variables en tcsh? Tengo que usar tcsh en el trabajo y no puedo hacer que funcione. Probé muchas variaciones, pero nada funcionó. Simplemente reemplazar la exportación con setenv y = con "" no funciona. Pero debería funcionar de alguna manera. Si comienzo un tcsh fuera de mi zsh con este conjunto de exportaciones, también puedo disfrutar de páginas de manual coloreadas en tcsh. Pero esa es una solución fea.

+1

Es probable que sea tter off preguntando esto en superuser.com – dotalchemy

Respuesta

4

El problema es que tcsh no interpreta la secuencia de escape en su nombre de variable, por lo que la variable de entorno termina con un literal \E cuando intenta establecerlo con tcsh. He aquí una manera de conseguir alrededor de eso, usando Bash para interpretar las secuencias de escape, aunque es un poco fea:

% 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

Estoy de acuerdo, es un poco feo, pero funciona. Sin embargo, dejo que el estado de la pregunta se abra, quizás obtengamos una solución nativa. – skorgon

+1

Puede hacer esto sin usar bash (dependiendo de la configuración de 'echo_style'. –

6

La manera de hacer esto que es nativa de tcsh y es portable a diferentes tipos de terminal es utilizar el comando echotc orden interna:

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` 

Ver man 5 terminfo para los termcap códigos y códigos de color.

md es enter_bold_mode
me es exit_attribute_mode
AF es set_a_foreground
AB se set_a_background

Por cierto, para hacer esto en Bash, utilice la utilidad tput y la capacidad de terminfo nombres externos:

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) 
Cuestiones relacionadas