使用 ANSI 跳脫碼印出有色文字

C/C++ 2019-12-26 187

ANSI 跳脫碼#

ANSI 跳脫碼,即 ASCII Escape Code,標準 CSI 格式為

CSI n1 [;n2 [;...]] m
  • n1 通常填入 \x1b,在 ASCII 表中 0x1b 代表著 escape。
  • n1n2SGR (Select Graphic Rendition),可參考表格對應相對的值。[1]

顏色輸出#

範例:粗紅體#

\x1b[;31;1m
  • SGR 30~37 代表著顏色,可參照此表格[2]
  • 後面的 1 代表粗體,不寫則為一般字型;通常一般的終端機會將粗體顯示成較亮的顏色,而非粗體。
  • 有些終端機提供用高位的數字指定較亮的顏色,90-97 及 100-107,如下圖

xterm-256color#

  • 使用 8 位元的 SGR,進而提供 256 色的輸出。