TCC unterstützt die ANSI-Norm X3.64, die es Ihnen ermöglicht, den Cursor, die Bildschirmfarbe und andere Anzeigeattribute durch Sequenzen von Sonderzeichen zu beeinflussen, die in den an die Anzeige gesendeten Text eingebettet sind. Diese Sequenzen werden als "ANSI-Befehle" bezeichnet. (Eine allgemeine Beschreibung dieser Funktion finden Sie unter ANSI-Unterstützung.) Aufgrund des Designs von Windows , TCC keine ANSI X3.64-Unterstützung für externe Anwendungen bieten. (Wenn Sie Windows 10 Creators Update oder höher verwenden, TCC die eingebaute ANSI-Unterstützung für die Konsole.)
TCC unterstützt die meisten gängigen ANSI X3.64-Bildschirmbefehle, bietet aber nicht den kompletten Satz an Optionen, der von den ANSI X3.64-Treibern einiger Betriebssysteme unterstützt wird (zum Beispiel, TCC enthält beispielsweise keine ANSI X3.64-Tastensubstitutionen; diese Funktionalität wird bereits durch Tasten-Aliase bereitgestellt ). Dieser Abschnitt ist eine Kurzreferenz zu den ANSI X3.64-Befehlen, die von TCC.
Die ANSI X3.64-Unterstützung in TCC kann mit der Konfigurationsoption ANSI Colors oder dem Befehl SETDOS /A aktiviert oder deaktiviert werden. Ob die ANSI X3.64-Unterstützung aktiviert ist, können Sie mit der internen Variable_ANSI überprüfen .
Ein ANSI X3.64-Befehlsstring besteht aus drei Teilen:
| <ESC>[ | Das ASCII-Zeichen ESC, gefolgt von einer linken Klammer. Diese beiden Zeichen müssen in allen ANSI X3.64-Zeichenfolgen vorhanden sein. |
| parameters | Optionale Parameter für den Befehl, normalerweise numerisch. Wenn mehrere Parameter vorhanden sind, werden sie durch Semikolon getrennt. |
| command | EinBefehl mit einem Buchstaben. (Groß- und Kleinschreibung beachten!) |
Um zum Beispiel den Cursor in Zeile 7, Spalte 12 zu positionieren, lautet der ANSI X3.64-Befehl:
<ESC>[7;12H
Der Parameterteil dieses Befehls ist "7;12" und der Befehlsteil ist "H".
Um ANSI X3.64-Befehle an den Bildschirm zu übertragen, können Sie den Befehl ECHO verwenden . Das ESC-Zeichen kann entweder direkt in die Zeichenkette eingefügt werden (wenn Sie die Zeichenkette in eine Stapeldatei einfügen und Ihr Editor ein solches Zeichen einfügt), oder Sie verwenden das interne "Escape"-Zeichen (Standard: Caret, [^]), gefolgt von einem kleinen "e".
Die oben gezeigte Sequenz könnte beispielsweise mit einem dieser beiden Befehle aus einer Stapeldatei übertragen werden (im ersten Fall wird direkt ein ESC-Zeichen verwendet, unten dargestellt durch "<ESC>"; im zweiten Fall wird ^e verwendet):
echo <ESC>[7;12H
echo ^e[7;12H
Sie können auch ANSI X3.64-Befehle in Ihre Eingabeaufforderung aufnehmen , indem Sie $e verwenden, um das <ESC>-Zeichen zu senden.
Befehle
Der interne TCC ANSI X3.64-Interpreter unterstützt die unten aufgeführten X3.64-Befehle. Variable Parameter werden in Kleinbuchstaben kursiv dargestellt, z. B. #. row und attr, und müssen bei Verwendung der Befehle durch den entsprechenden dezimalen Zahlenwert ersetzt werden. Der Standardwert für row, rows, col, und cols ist 1.
<ESC>[rowsA |
Cursor zeilenweise aufwärts (Standardwert ist 1) |
<ESC>[rowsB |
Cursorzeilenweise abwärts (Standardwert ist 1) |
<ESC>[b |
Wiederholung des vorherigen Zeichens |
<ESC>[#b |
Wiederholung des vorherigen Zeichens # mal |
<ESC>[colsC |
Cursornach rechts durch Spalten (Standardwert 1) |
<ESC>[colsD |
Cursornach links durch Spalten (Standardwert 1) |
<ESC>[d |
Cursor in die erste Zeile bewegen |
<ESC>[rowd |
Cursorin eine Zeile bewegen |
<ESC>[E |
Cursor eine Zeile nach unten und zur ersten Spalte |
<ESC>[rowsE |
Cursorzeilenweisenach unten und in die erste Spalte |
<ESC>[F |
Cursor eine Zeile nach oben und in die erste Spalte |
<ESC>[rowsF |
Cursorzeilenweisenach oben und in die erste Spalte |
<ESC>[row;colf |
Cursorposition setzen, wie bei Befehl "H |
<ESC>[G |
Cursor in Spalte 1 bewegen |
<ESC>[colG |
Cursor in die Spalte verschieben |
<ESC>[H |
Cursor auf links oben setzen |
<ESC>[row;H |
Cursor auf Zeile, Spalte 1 setzen |
<ESC>[row;colH |
Cursorposition setzen (links oben ist Zeile 1, Spalte 1) |
<ESC>[4h |
Einfügemodus |
<ESC>[?25h |
Cursor anzeigen |
<ESC>[J |
Löschen vom Cursor bis zum Ende der Anzeige |
<ESC>[0J |
Löschen vom Cursor bis zum Ende der Anzeige |
<ESC>[1J |
Löschen vom Anfang der Anzeige bis zum Cursor |
<ESC>[2J |
Gesamten Bildschirm löschen |
<ESC>[K |
Löschen vom Cursor bis zum Ende der Zeile |
<ESC>[1K |
Löschen vom Anfang der Zeile bis zum Cursor (einschließlich) |
<ESC>[2K |
Zeile löschen |
<ESC>[L |
Eine Leerzeile einfügen |
<ESC>[#L |
# Leerzeileneinfügen |
<ESC>[l |
Cursor einen Tabulator vorwärts bewegen |
<ESC>[#l |
Cursor um # Tabulatoren vorwärts bewegen |
<ESC>[4l |
Überstreichen-Modus |
<ESC>[?25l |
Cursor ausblenden |
<ESC>[M |
Eine Zeile löschen |
<ESC>[#M |
# Zeilenlöschen |
<ESC>[attr1;attr2;...m |
Anzeigeattribute einstellen; siehe Tabelle der Attributwerte unten |
<ESC>[L |
Ein Zeichen löschen |
<ESC>[#L |
# Zeichenlöschen |
<ESC>[s |
Cursorposition speichern (darf nicht verschachtelt werden) |
<ESC>[#S |
Nach oben blättern |
<ESC>[#T |
Abwärts blättern |
<ESC>[u |
Gespeicherte Cursorposition wiederherstellen (oder oben links, wenn nichts gespeichert wurde) |
<ESC>[?5W |
Tabulator nach jeweils 8 Spalten setzen |
<ESC>[?5;#W |
Tabulator alle # Spalten setzen |
<ESC>[X |
Ein Zeichen löschen |
<ESC>[#X |
# Zeichen löschen |
<ESC>[Z |
Cursor einen Tabulator zurücksetzen |
<ESC>[#Z |
Cursor um # Tabulatoren zurücksetzen |
<ESC>[?7h |
Zeilenumbruch am Bildschirmrand |
<ESC>[?7l |
Zeilen am Bildschirmrand nicht umbrechen |
<ESC>[21t |
Sende "^e]lTitle^e\" (den Fenstertitel der Konsole) an die Konsoleneingabe |
<ESC>]0;TitleBEL |
Konsolentitel auf "Titel" setzen. BEL ist das ASCII-Zeichen 7 |
<ESC>]4;...BEL |
Farbe(n) ändern |
<ESC>]104;...BEL |
Farbe(n) zurücksetzen |
<ESC>[@ |
Ein Leerzeichen einfügen |
<ESC>[#@ |
# Leerzeicheneinfügen |
<ESC>8 |
Cursor wiederherstellen |
<ESC>7 |
Cursor speichern |
<ESC>[#;#;#...,~ |
Ton abspielen |
<ESC>c |
Zurücksetzen |
<ESC>D |
Index |
<ESC>E |
Nächste Zeile |
<ESC>H |
Horizontaler Tabulator setzen |
<ESC>M |
Index umkehren |
Anzeige-Attribute
Die Escape-Sequenzenm setzen Anzeigeattribute. FolgendeAttributwerte werdenfür den Befehlmverwendet :
| 0 | Alle Attribute auf Standardwerte zurücksetzen |
| 1 | Helle Vordergrundfarbe (hohe Intensität) |
| 2 | Normale Intensität der Vordergrundfarbe |
| 4 | Heller (hohe Intensität) Hintergrund |
| 5 | Heller (hohe Intensität) Hintergrund |
| 7 | Video umkehren |
| 8 | Verdeckt (Vordergrund wird zum Hintergrund) |
| 22 | Fettaus (der Vordergrund ist nicht intensiv) |
| 24 | Hintergrund ist nicht intensiv |
| 25 | Hintergrund ist nicht intensiv |
| 27 | Normales Video |
| 28 | Verdeckt aus |
| 30..37 | Vordergrundfarbe |
| 40..47 | Hintergrundfarbe |
| 90..97 | Helle Vordergrundfarbe |
| 100..107 | Helle Hintergrundfarbe |
Vordergrund Code |
Hintergrund Code |
Farbe |
30 |
40 |
Schwarz |
31 |
41 |
Rot |
32 |
42 |
Grün |
33 |
43 |
Gelb |
34 |
44 |
Blau |
35 |
45 |
Magenta |
36 |
46 |
Cyan |
37 |
47 |
Weiß |
90 |
100 |
Grau |
91 |
101 |
Hellrot |
92 |
102 |
Helles Grün |
93 |
103 |
Helles Gelb |
94 |
104 |
Leuchtendes Blau |
95 |
105 |
Helles Magenta |
96 |
106 |
Helles Cyan |
97 |
107 |
Helles Weiß |
Wenn Sie mehrere Attribute einstellen, kombinieren Sie diese in einem einzigen Befehl (mit dem Verkettungsoperator ; ). Die Attributeinstellungen sind kumulativ und unabhängig von der Reihenfolge (außer Code 0, der auf die Standardeinstellung zurückgesetzt wird).
Beispiele
Leuchtend roten Vordergrund einstellen, ohne den Hintergrund zu ändern:
echo ^e[31;1m
Die Anzeige auf helles Cyan auf Blau setzen und den Bildschirm löschen:
echo ^e[44;36;1m^e[2J
Richten Sie einen Prompt ein, der die Cursorposition speichert, das Datum und die Uhrzeit in der obersten Zeile in hellem Weiß auf Magenta anzeigt, dann die Cursorposition wiederherstellt, die Farbe auf helles Cyan auf Blau setzt und den Standardprompt anzeigt:
prompt $e[s$e[1;1f$e[45;37;1m$e[K$d $t$e[u$e[44;36;1m$p$g