Pregunta

Utilizando secuencias de terminal, puedo colorear el texto en un emulador de terminal:

$ echo -e '\e[37;41m--this is white on red--\e[0m'

Y esto funciona.

Lo siguiente imprime un rectángulo rojo, es decir, los caracteres de espacio tienen un fondo rojo y un primer plano vacío:

$ echo -e '\e[37;41m     \e[0m '

Pero lo siguiente imprime dos rectángulos rojos separados por una pestaña:

$ echo -e '\e[37;41m  \t  \e[0m '

Es decir, el carácter de tabulación no recibe el resaltado de fondo rojo. Toma el color de fondo del terminal predeterminado.

¿Por qué no se resalta la pestaña como espacio? ¿Puedo forzar esto de otra manera?

¿Fue útil?

Solución 2

He encontrado la respuesta: no, la pestaña no se puede resaltar en un emulador de terminal compatible con los estándares. Tab no es realmente un espacio en blanco en la terminal; es explícitamente un carácter de movimiento del cursor para avanzar a la siguiente tabulación. Entonces, en efecto, mi ejemplo dice "imprimir dos espacios sobre fondo rojo, avanzar a la siguiente tabulación, luego imprimir dos espacios más sobre fondo rojo".

La solución alternativa sería la sugerencia de ankon de convertir pestañas a espacios antes de imprimir.

Otros consejos

Si no necesita que las pestañas sean pestañas, puede preprocesar el texto mediante expand (1).

Porque fue difícil para mí encontrar una buena solución (y esta página fue el primer resultado de búsqueda) ... Esto es lo que tengo en el archivo .bashrc (de http://pastebin.com/Pn1fkkJq con modificaciones):

catt() { # Highlight whitespace on the terminal -- rolfwr
    local C=`printf '\033[0;36m'` R=`printf '\033[0m'`
    #cat "$@" | sed -e "s/      /${C}▹▹▹▹▹▹▹▹$R/g" -e "s/ /${C}·$R/g" -e "s/$/${C}⁋$R/"
    #cat "$@" | sed -e "s/ /${C}·$R/g" -e "s/\t/${C} ▹▹ $R/g" -e "s/$/${C}⁋$R/"
    cat "$@" | sed -e "s/ /${C}·$R/g" | expand | sed -e "s/ \( *\)/${C}▹\1$R/g" -e "s/$/${C}⁋$R/"
    #cat "$@" | sed -e "s/ /${C}.$R/g" | expand | sed -e "s/ \( *\)/${C}>\1$R/g" -e "s/$/${C}P$R/"
}

Espero que esto ayude a alguien más también.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top