Domanda

Usando le sequenze di terminali, posso colorare il testo in un emulatore di terminale:

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

E questo funziona.

Quanto segue stampa un rettangolo rosso, ovvero i caratteri dello spazio hanno uno sfondo rosso e un primo piano vuoto:

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

Ma quanto segue stampa due rettangoli rossi separati da una scheda:

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

Cioè, il carattere di tabulazione non riceve l'evidenziazione dello sfondo rosso. Prende il colore di sfondo del terminale predefinito.

Perché la scheda non è evidenziata come spazio? Posso forzarlo in un altro modo?

È stato utile?

Soluzione 2

Ho trovato la risposta: no, la scheda non può essere evidenziata in un emulatore di terminale conforme agli standard. Tab non è realmente uno spazio bianco nel terminale; è esplicitamente un carattere di movimento del cursore per andare avanti al tab stop successivo. Quindi, in effetti il ??mio esempio dice "stampa due spazi su sfondo rosso, vai avanti al tab stop successivo, quindi stampa altri due spazi su sfondo rosso".

La soluzione alternativa sarebbe il suggerimento di ankon di convertire le schede in spazi prima della stampa.

Altri suggerimenti

Se non hai bisogno che le schede siano tab, puoi preelaborare il tuo testo tramite espandi (1).

Perché è stato difficile per me trovare una buona soluzione (e questa pagina è stata il primo risultato di ricerca) ... Questo è quello che ho nel file .bashrc (da http://pastebin.com/Pn1fkkJq con modifiche):

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/"
}

Spero che questo possa aiutare anche qualcun altro.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top