ANSI:s Escape-sekvenser

I många terminaler och emulatorer kan man ändra färg och flytta markören genom att skicka escape-sekvenser till dem. Den mest spridda standarden för dessa sekvenser är definierad av ANSI och den följs bland annat av VT100 som är en av de vanligast förekommande terminalerna.

Beroende på hur man kommunicerar med terminalen finns det naturligtvis olika sätt att skicka dessa koder till den, men om vi antar att vi vill göra det från ett program så skickas escape-sekvenserna på samma sätt som man skriver ut vanlig text till terminalen, dvs med till exempel printf (C/C++), System.out.println, (Java) eller echo (olika script). På kodsidan finns exempel på hur escape-koderna kan användas i olika program.

Nedan följer ett utdrag ur ANSI:s tabell av escape-sekvenser. <esc> står för ASCII-koden för "escape", 0x1B. Värden inom måsvingar är variabler, dvs {ROW} byts ut mot ett radnummer.

NamnEsc-sekvensBeskrivning
Cursor Up<esc>[{N}AFlytta markören uppåt N rader, stanna vid terminalens kant. N = 1 om inget annat anges.
Cursor Down<esc>[{N}BFlytta markören nedåt N rader, stanna vid terminalens kant. N = 1 om inget annat anges.
Cursor Right<esc>[{N}CFlytta markören åt höger N kolumner, stanna vid terminalens kant. N = 1 om inget annat anges.
Cursor Left<esc>[{N}DFlytta markören åt vänster N kolumner, stanna vid terminalens kant. N = 1 om inget annat anges.
Cursor Home<esc>[{ROW};{COLUMN}HFlytta markören till rad {ROW} och kolumn {COLUMN}. Om rad och kolumn inte anges (<esc>[H), kommer markören att flyttas till terminalens övre vänstra hörn.
Move Cursor<esc>[{ROW}{COLUMN}fSamma som Cursor Home.
Next Line<esc>EFlytta markören till början av nästa rad. Rulla texten uppåt om markören är på nedersta raden.
Index<esc>DFlytta markören nedåt en rad. Rulla texten uppåt om markören är på nedersta raden.
Reverse Index<esc>MFlytta markören uppåt en rad. Rulla texten nedåt om markören är på översta raden.
Save Cursor<esc>[sSpara nuvarande markörposition.
Unsave Cursor<esc>[uÅterställ markörpositionen till senast sparade.
Query Cursor Position<esc>[6nBegär 'Report Cursor Position' från terminalen.
Report Cursor Position<esc>[{ROW};{COLUMN}RGenereras av terminalen som svar på 'Query Cursor Position' och innehåller nuvarande markörposition.
Save Cursor + Attrs<esc>7Spara nuvarande markörposition och attribut.
Restore Cursor + Attrs<esc>8Återställ markörposition och attribut till senast sparade.
Scroll Screen<esc>[rSlå på textrullning för hela terminalen.
Scroll Screen<esc>[{start};{end}rSlå på textrullning från rad {start} till rad {end}.
Scroll Down<esc>DRulla texten nedåt en rad.
Scroll Up<esc>MRulla texten uppåt en rad.
Set smooth scrolling<esc>[?4hMjuk textrullning.
Set jump scrolling<esc>[?4lHoppig textrullning.
Erase End of Line<esc>[KRadera texten från markörpositionen till slutet av raden.
Erase End of Line<esc>[0KRadera texten från markörpositionen till slutet av raden.
Erase Start of Line<esc>[1KRadera texten från markörpositionen till början av raden.
Erase Line<esc>[2KRadera hela raden som markören står på.
Erase Down<esc>[JRadera alla rader från nuvarande till botten av terminalen.
Erase Down<esc>[0JRadera alla rader från nuvarande till botten av terminalen.
Erase Up<esc>[1JRadera alla rader från nuvarande till toppen av terminalen.
Erase Screen<esc>[2JRadera hela terminalen med bibehållen bakgrundsfärg och flytta markören till övre vänstra hörnet.
Set Attribute Mode<esc>[{attr 1};...;{attr n}m Sätt visuella attribut enligt tabellen nedan

0Återställ alla attribut
1Ljus
2Skuggad
4Understruken
5Blinkande
7Spegelvänd
8Dold
Textfärg
30Svart
31Röd
32Grön
33Gul
34Blå
35Lila
36Cyan
37Vit
Bakgrunsfärg
40Svart
41Röd
42Grön
43Gul
44Blå
45Lila
46Cyan
47Vit
Font Set G0<esc>(Använd standardtypsnitt.
Font Set G1<esc>)Använd alternativt typsnitt (fetstil/kursiv etc).
Double-height top half<esc>#3Ändra aktuell rad till dubbel höjd, övre halvan.
Double-height bottom half<esc>#4Ändra aktuell rad till dubbel höjd, nedre halvan.
Normal size<esc>#5Ändra aktuell rad till normal bredd och höjd.
Double-width<esc>#6Ändra aktuell rad till dubbel bredd.
Leds<esc>[1;...;4qTänd en eller fler programmerbara lysdioder (1-4).
Leds<esc>[qSläck alla programmerbara lysdioder.
Set Tab<esc>HSätt en tab på nuvarande kolumn.
Clear Current Tab<esc>[gTa bort tab från nuvarande kolumn.
Clear Current Tab<esc>[0gTa bort tab från nuvarande kolumn.
Clear All Tabs<esc>[3gTa bort alla tabbar.
Enable Line Wrap<esc>[7hSlå på automatisk radbrytning.
Disable Line Wrap<esc>[7lSlå av automatisk radbrytning.
Reverse video<esc>[?5hInvertera färgerna i terminalen.
Normal video<esc>[?5lÅterställ färgerna i terminalen.
Set Key Definition<esc>[{key};"{string}"pAssociera en text med en tangent ({key} = tangentens decimala ASCII-värde).
Reset Device<esc>cÅterställ alla terminalinställningar till standardvärden.
E Test<esc>#8Fyll terminalen med bokstaven E.
Power up Test<esc>[2;1yUtför startuptest (ROM, RAM, NVR, tangentbord och AVO).
Data loop-back Test<esc>[2;2yUtför data loop-back-test. Kabel krävs.
EIA modem control<esc>[2;4yKabel krävs.
Repeat test<esc>[2;8yUpprepa testet tills dess att det misslyckas.