Frage

Endsequenzen verwenden, kann ich Text in einem Terminal-Emulator Farbe:

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

Und das funktioniert.

Die folgende druckt ein rotes Rechteck, das heißt Leerzeichen hat einen roten Hintergrund und einen leeren Vordergrund:

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

Aber die folgenden druckt zwei rot durch einen Tabulator getrennt Rechtecken:

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

Das heißt, das Tab-Zeichen der rote Hintergrund Hervorhebung nicht erhalten. Es nimmt die Standard-Terminal-Hintergrundfarbe.

Warum ist nicht Tab hervorgehoben wie der Raum? Kann ich diese auf eine andere Weise erzwingen?

War es hilfreich?

Lösung 2

Ich habe die Antwort gefunden: nein, Tab kann nicht in einem standardkonformen Terminalemulator hervorgehoben. Tab ist nicht wirklich Leerzeichen im Terminal; es ist ausdrücklich ein Cursor-Bewegung Charakter vorwärts zum nächsten Tabstopp zu gehen. So in der Tat mein Beispiel sagt: „drucken zwei Räume auf rotem Hintergrund, bewegen uns auf die nächste Tabstopp, dann drucken zwei weitere Räume auf rotem Hintergrund“.

Die Abhilfe ANKON würde Vorschlag der Tabulatoren in Leerzeichen konvertieren vor dem Druck.

Andere Tipps

Wenn Sie nicht auf die Registerkarten müssen Tabs sein, könnten Sie vorverarbeiten Ihren Text durch erweitern (1).

Da war es schwer für mich, eine schöne Lösung zu finden (und diese Seite wurde zuerst Sucher) ... Das ist, was ich in .bashrc-Datei (von http://pastebin.com/Pn1fkkJq mit Änderungen):

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

Hope dies jemand anderes auch helfen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top