ANSI escape kódy
ANSI escape kód je krátká posloupnost znaků, kterou program vypíše, aby řekl terminálu, aby udělal něco jiného než tyto znaky zobrazit — vypíšete slovo červeně, posunete kurzor nahoru o dva řádky, vymažete obrazovku. Terminál posloupnost pohltí a vykoná ji, proto se log plný těchto kódů v editoru zobrazuje jako šum.
Každý kód níže začíná escape bytem a — až na jednu výjimku — otevírací závorkou. Sloupec parametr uvádí část mezi závorkou a koncovým písmenem, což je to, co skládáte v kódu; první sloupec ukazuje celou posloupnost tak, jak byste ji napsali v shellu.
Podpora se liší mezi terminály a tato stránka to uvádí tam, kde na tom záleží. Osm základních barev a tučné písmo fungují všude; blikání, dvojité podtržení a true color ne.
Anatomie sekvence
6Každý kód na této stránce má stejný tvar: escape byte, otevírací závorka, parametry a jedno písmeno, které říká, co s nimi dělat.
| Sekvence | Parametr | Účinek |
|---|---|---|
| \e | 0x1B | Escape byte, kterým začíná každá sekvenceV shellu se píše \e, v C \033, ve většině jazyků \x1b a v JSON a Javě \u001b. |
| \e[ | CSI | Control Sequence Introducer — otevírá příkazovaný příkaz |
| \e[<n>m | m | Select Graphic Rendition: vše barvy a styly končí m |
| \e[1;4;31m | 1;4;31 | Několik parametrů najednou, oddělené středníkyTučné, podtržené a červené v jedné sekvenci — kratší než tři samostatné a se stejným účinkem. |
| \e[0m | 0 | Obnoví všechny atributy na výchozí nastavení termináluVypíšete jej na konci barevného výstupu. Program, který jej vynechá, ponechá uživateli barevný prompt. |
| \e]8;;URL\e\\text\e]8;;\e\\ | OSC 8 | Klikatelný hypertextový odkaz v terminálech, které jej podporujíJedná se o OSC sekvenci, nikoli CSI, a končí ji ESC \ místo písmena. |
Atributy textu
14Podpora je nerovnoměrná mimo první pět. Blikání je téměř všude ignorováno a několik terminálů vykresluje slabé a kurzívu stejně.
| Sekvence | Parametr | Účinek |
|---|---|---|
| \e[1m | 1 | Tučné nebo jasné |
| \e[2m | 2 | Slabé |
| \e[3m | 3 | Kurzíva |
| \e[4m | 4 | Podtržení |
| \e[5m | 5 | BlikáníRozšířeně se ignoruje; moderní terminály jej vykreslují jako běžný text. |
| \e[7m | 7 | Reverse: zaměňuje popředí a pozadí |
| \e[8m | 8 | Skryté: text existuje, ale nevykresluje se |
| \e[9m | 9 | Přeškrtnutí |
| \e[21m | 21 | Dvojité podtrženíNěkteré terminály čtou 21 jako "vypnout tučné". |
| \e[22m | 22 | Normální intenzita: ruší tučné i slabé |
| \e[23m | 23 | Ruší kurzívu |
| \e[24m | 24 | Ruší podtržení |
| \e[27m | 27 | Ruší reverse |
| \e[29m | 29 | Ruší přeškrtnutí |
Barva textu
17Osm standardních barev a jejich jasné protějšky. Co čtenář vlastně vidí, je interpretace tématu jeho terminálu — "červená" je pozice v paletě, ne hex hodnota.
| Sekvence | Parametr | Účinek |
|---|---|---|
| \e[30m | 30 | Černý text |
| \e[31m | 31 | Červený text |
| \e[32m | 32 | Zelený text |
| \e[33m | 33 | Žlutý text |
| \e[34m | 34 | Modrý text |
| \e[35m | 35 | Fialový text |
| \e[36m | 36 | Azurový text |
| \e[37m | 37 | Bílý text |
| \e[39m | 39 | Zpět na výchozí barvu textu |
| \e[90m | 90 | Jasný černý text |
| \e[91m | 91 | Jasný červený text |
| \e[92m | 92 | Jasný zelený text |
| \e[93m | 93 | Jasný žlutý text |
| \e[94m | 94 | Jasný modrý text |
| \e[95m | 95 | Jasný fialový text |
| \e[96m | 96 | Jasný azurový text |
| \e[97m | 97 | Jasný bílý text |
Barva pozadí
17Stejná paleta posunutá o deset. Barevný kód pozadí nastaví buňku za textem a zůstává v platnosti, dokud není zrušen.
| Sekvence | Parametr | Účinek |
|---|---|---|
| \e[40m | 40 | Černé pozadí |
| \e[41m | 41 | Červené pozadí |
| \e[42m | 42 | Zelené pozadí |
| \e[43m | 43 | Žluté pozadí |
| \e[44m | 44 | Modré pozadí |
| \e[45m | 45 | Fialové pozadí |
| \e[46m | 46 | Azurové pozadí |
| \e[47m | 47 | Bílé pozadí |
| \e[49m | 49 | Zpět na výchozí pozadí |
| \e[100m | 100 | Jasné černé pozadí |
| \e[101m | 101 | Jasné červené pozadí |
| \e[102m | 102 | Jasné zelené pozadí |
| \e[103m | 103 | Jasné žluté pozadí |
| \e[104m | 104 | Jasné modré pozadí |
| \e[105m | 105 | Jasné fialové pozadí |
| \e[106m | 106 | Jasné azurové pozadí |
| \e[107m | 107 | Jasné bílé pozadí |
256 barev a true color
4Dvě rozšíření stejného mechanismu SGR. Obě jsou široce, ale ne všeobecně podporovány; terminál, který jim nerozumí, obvykle sekvenci ignoruje místo její reprodukce.
| Sekvence | Parametr | Účinek |
|---|---|---|
| \e[38;5;<n>m | 38;5;n | Text v paletě barvy n, 0–2550–15 je šestnáctka výše, 16–231 je krychle barev 6×6×6, 232–255 je stupnice šedi. |
| \e[48;5;<n>m | 48;5;n | Pozadí v paletě barvy n, 0–255 |
| \e[38;2;<r>;<g>;<b>m | 38;2;r;g;b | Text v přesné 24bitové barvě |
| \e[48;2;<r>;<g>;<b>m | 48;2;r;g;b | Pozadí v přesné 24bitové barvě |
Pohyb kurzoru
11Pohyby neposunují obsah a nezalamují: kurzor už nahoru obrazovky ignoruje požadavek jít výš.
| Sekvence | Parametr | Účinek |
|---|---|---|
| \e[<n>A | A | Nahoru o n řádků |
| \e[<n>B | B | Dolů o n řádků |
| \e[<n>C | C | Vpravo o n sloupců |
| \e[<n>D | D | Vlevo o n sloupců |
| \e[<n>E | E | O n řádků dolů, na začátek řádky |
| \e[<n>F | F | O n řádků nahoru, na začátek řádky |
| \e[<n>G | G | Na sloupec n v aktuálním řádku |
| \e[<row>;<col>H | H | Na absolutní řádek a sloupec, počítáno od 1 |
| \e[s | s | Zapamatuje si polohu kurzoru |
| \e[u | u | Vrátí se na zapamatovanou polohu |
| \e[6n | 6n | Zeptá se terminálu, kde je kurzorTerminál odpovídá na standardní vstup jako \e[<řádek>;<sloupec>R — jediná sekvence zde, která vrací odpověď. |
Mazání
7Mazání zapisuje mezery s aktuální barvou pozadí; kurzorem nepohybuje.
| Sekvence | Parametr | Účinek |
|---|---|---|
| \e[0J | 0J | Vymaže od kurzoru do konce obrazovky |
| \e[1J | 1J | Vymaže od začátku obrazovky po kurzor |
| \e[2J | 2J | Vymaže celou obrazovkuKurzor zůstane, kde byl — proto se obvykle kombinuje s \e[H. |
| \e[3J | 3J | Vymaže také zásobník posuvů |
| \e[0K | 0K | Vymaže od kurzoru do konce řádky |
| \e[1K | 1K | Vymaže od začátku řádky po kurzor |
| \e[2K | 2K | Vymaže celý řádek\r\e[2K je obvyklý způsob, jak překreslit řádek s průběhem na místě. |
Režimy terminálu
8Soukromé režimy, označené otazníkem. Mění chování terminálu, nikoli vzhled jednoho textu, a každý musí být vypnut před ukončením programu.
| Sekvence | Parametr | Účinek |
|---|---|---|
| \e[?25l | ?25l | Skryje kurzor |
| \e[?25h | ?25h | Zobrazí kurzor |
| \e[?1049h | ?1049h | Přepne na alternativní obrazovkuTo, co používá celoobrazovkový program, aby história shellu pod ním přežila. |
| \e[?1049l | ?1049l | Přepne zpět na hlavní obrazovku |
| \e[?7h | ?7h | Zalomí dlouhé řádky na pravém okraji |
| \e[?7l | ?7l | Nechá dlouhé řádky přetéci přes pravý okraj |
| \e[?2004h | ?2004h | Zapne bracketed pasteVložený text přijde zabalený v \e[200~ a \e[201~, aby shell poznal psaní od vkládání. |
| \e[?2004l | ?2004l | Vypne bracketed paste |