ANSI-escape codes
Een ANSI-escapecode is een korte reeks tekens die een programma afdrukt om de terminal iets anders te laten doen dan die tekens weergeven — volgende woorden rood maken, cursor twee regels omhoog verplaatsen, scherm wissen. De terminal verwerkt de reeks en voert deze uit, daarom ziet een logbestand vol ermee eruit als ruis als je het in een editor opent.
Elke code hieronder begint met de escape-byte en, met één uitzondering, een openingshaakje. De parameterkolom geeft het gedeelte tussen het haakje en de laatste letter aan, dit is wat je in code samenstelt; de eerste kolom toont de volledige reeks zoals je deze in een shell zou schrijven.
Ondersteuning verschilt per terminal, en deze pagina vermeldt het waar relevant. De acht basiskleuren en vet werken overal; knipperend, dubbel onderstrepen en true color niet.
Anatomie van een reeks
6Elke code op deze pagina heeft dezelfde vorm: de escape-byte, openingshaakje, parameters en één letter die zegt wat ermee te doen.
| Reeks | Parameter | Effect |
|---|---|---|
| \e | 0x1B | De escape-byte die elke reeks startGeschreven als \e in een shell, \033 in C, \x1b in meeste talen en \u001b in JSON en Java. |
| \e[ | CSI | Control Sequence Introducer — opent een geparameteriseerde opdracht |
| \e[<n>m | m | Select Graphic Rendition: alles kleur en stijl eindigt in m |
| \e[1;4;31m | 1;4;31 | Meerdere parameters tegelijk, gescheiden door puntkomma'sVet, onderstreept en rood in één reeks — korter dan drie aparte en identiek in effect. |
| \e[0m | 0 | Wist elk attribuut terug naar terminal standaardGeef dit af aan het einde van gekleurde uitvoer. Een programma dat afsluit zonder dit laat de gebruiker met een gekleurde prompt. |
| \e]8;;URL\e\\text\e]8;;\e\\ | OSC 8 | Een klikbare hyperlink, in terminals die dit ondersteunenEen OSC-reeks in plaats van CSI, en beëindigd door ESC \ in plaats van een letter. |
Tekstatributen
14Ondersteuning is ongelijk onder de eerste vijf. Knipperend wordt bijna overal genegeerd, en enkele terminals renderen zwak en cursief identiek.
| Reeks | Parameter | Effect |
|---|---|---|
| \e[1m | 1 | Vet of helder |
| \e[2m | 2 | Zwak |
| \e[3m | 3 | Cursief |
| \e[4m | 4 | Onderstreping |
| \e[5m | 5 | KnipperendVeel genegeerd; de meeste moderne terminals renderen het als gewone tekst. |
| \e[7m | 7 | Omgekeerd: wisselt voor- en achtergrond |
| \e[8m | 8 | Verborgen: tekst is er maar wordt niet getekend |
| \e[9m | 9 | Doorgehaald |
| \e[21m | 21 | Dubbel onderstrepenSommige terminals lezen 21 als 'vet uit'. |
| \e[22m | 22 | Normale intensiteit: annuleert vet en zwak |
| \e[23m | 23 | Cursief annuleren |
| \e[24m | 24 | Onderstreping annuleren |
| \e[27m | 27 | Omkering annuleren |
| \e[29m | 29 | Doorhaling annuleren |
Tekstkleur
17De acht standaardkleuren en hun heldere tegenhangers. Wat de lezer werkelijk ziet is de terminal-thema interpretatie ervan — 'rood' is een plek in een palet, geen hexwaarde.
| Reeks | Parameter | Effect |
|---|---|---|
| \e[30m | 30 | Zwarte tekst |
| \e[31m | 31 | Rode tekst |
| \e[32m | 32 | Groene tekst |
| \e[33m | 33 | Gele tekst |
| \e[34m | 34 | Blauwe tekst |
| \e[35m | 35 | Magenta tekst |
| \e[36m | 36 | Cyaan tekst |
| \e[37m | 37 | Witte tekst |
| \e[39m | 39 | Terug naar standaard tekstkleur |
| \e[90m | 90 | Helder zwarte tekst |
| \e[91m | 91 | Helder rode tekst |
| \e[92m | 92 | Helder groene tekst |
| \e[93m | 93 | Helder gele tekst |
| \e[94m | 94 | Helder blauwe tekst |
| \e[95m | 95 | Helder magenta tekst |
| \e[96m | 96 | Helder cyaan tekst |
| \e[97m | 97 | Helder witte tekst |
Achtergrondkleur
17Dezelfde palet verschoven met tien. Een achtergrondcode stelt de cel achter de tekst in en blijft van kracht tot deze gereset wordt.
| Reeks | Parameter | Effect |
|---|---|---|
| \e[40m | 40 | Zwarte achtergrond |
| \e[41m | 41 | Rode achtergrond |
| \e[42m | 42 | Groene achtergrond |
| \e[43m | 43 | Gele achtergrond |
| \e[44m | 44 | Blauwe achtergrond |
| \e[45m | 45 | Magenta achtergrond |
| \e[46m | 46 | Cyaan achtergrond |
| \e[47m | 47 | Witte achtergrond |
| \e[49m | 49 | Terug naar standaard achtergrond |
| \e[100m | 100 | Helder zwarte achtergrond |
| \e[101m | 101 | Helder rode achtergrond |
| \e[102m | 102 | Helder groene achtergrond |
| \e[103m | 103 | Helder gele achtergrond |
| \e[104m | 104 | Helder blauwe achtergrond |
| \e[105m | 105 | Helder magenta achtergrond |
| \e[106m | 106 | Helder cyaan achtergrond |
| \e[107m | 107 | Helder witte achtergrond |
256 kleuren en true color
4Twee uitbreidingen van hetzelfde SGR-mechanisme. Beide worden veel maar niet universeel ondersteund; een terminal die deze niet begrijpt negeert meestal de reeks in plaats van deze af te drukken.
| Reeks | Parameter | Effect |
|---|---|---|
| \e[38;5;<n>m | 38;5;n | Tekst in paletkleur n, 0–2550–15 zijn de zestien hierboven, 16–231 een 6×6×6-kleurkubus, 232–255 een grijsschaal-helling. |
| \e[48;5;<n>m | 48;5;n | Achtergrond in paletkleur n, 0–255 |
| \e[38;2;<r>;<g>;<b>m | 38;2;r;g;b | Tekst in een exacte 24-bits kleur |
| \e[48;2;<r>;<g>;<b>m | 48;2;r;g;b | Achtergrond in een exacte 24-bits kleur |
Cursorbeweging
11Bewegingen schuiven niet en breken niet: een cursor al bovenaan het scherm negeert een verzoek omhoog te gaan.
| Reeks | Parameter | Effect |
|---|---|---|
| \e[<n>A | A | Omhoog n rijen |
| \e[<n>B | B | Omlaag n rijen |
| \e[<n>C | C | Rechts n kolommen |
| \e[<n>D | D | Links n kolommen |
| \e[<n>E | E | Omlaag n rijen, naar het start van de regel |
| \e[<n>F | F | Omhoog n rijen, naar het start van de regel |
| \e[<n>G | G | Naar kolom n van huidige rij |
| \e[<row>;<col>H | H | Naar absolute rij en kolom, geteld vanaf 1 |
| \e[s | s | Herinnert de cursorpositie |
| \e[u | u | Teruggaan naar herinnerde positie |
| \e[6n | 6n | Vraag terminal waar cursor isTerminal reageert op stdin als \e[<rij>;<kolom>R — de enige reeks hier die een antwoord geeft. |
Wissen
7Wissen schrijft spaties met huidige achtergrondkleur; het beweegt de cursor niet.
| Reeks | Parameter | Effect |
|---|---|---|
| \e[0J | 0J | Wis van cursor tot einde scherm |
| \e[1J | 1J | Wis van schermbegin tot cursor |
| \e[2J | 2J | Wis heel schermCursor blijft waar hij was, daarom meestal gecombineerd met \e[H. |
| \e[3J | 3J | Wis ook scrollback-buffer |
| \e[0K | 0K | Wis van cursor tot regelende |
| \e[1K | 1K | Wis van regelstart tot cursor |
| \e[2K | 2K | Wis hele regel\r\e[2K is gebruikelijk om een voortgangslijn ter plekke opnieuw te tekenen. |
Terminalmodi
8Privé-modi, gemarkeerd door vraagteken. Zij veranderen hoe terminal zich gedraagt in plaats van hoe één stuk tekst eruitziet, en elk moet terug uit voordat programma eindigt.
| Reeks | Parameter | Effect |
|---|---|---|
| \e[?25l | ?25l | Verberg cursor |
| \e[?25h | ?25h | Toon cursor |
| \e[?1049h | ?1049h | Schakel naar alternatief schermWat volledig scherm programma gebruikt zodat shell-scrollback eronder blijft. |
| \e[?1049l | ?1049l | Teruggaan naar hoofdscherm |
| \e[?7h | ?7h | Lange regels breken aan rechterkant |
| \e[?7l | ?7l | Lange regels doorlopen aan rechterkant |
| \e[?2004h | ?2004h | Bracketed paste inschakelenGeplakte tekst komt omwikkeld in \e[200~ en \e[201~, zodat shell typing van plakken onderscheidt. |
| \e[?2004l | ?2004l | Bracketed paste uitschakelen |