2015-09-11 52 views
0

我剛剛學會如何使用vt100轉義碼在終端(\033[30m\033[40m)中更改背景和文本顏色。我想知道是否有使用十六進制顏色代碼的方法,而不是限於使用30 - 37或40 - 47時獲得的8種顏色。例如:\033[#48FF1Fm。 如果這是不可能的,我不會感到驚訝,但我認爲這值得問。你可以使用十六進制顏色值與vt100轉義碼C++

回答

0

VT-100是一箇舊的終端,我很驚訝它有顏色逃脫代碼!

另請參閱此堆棧溢出List of ANSI color escape sequences它有一些很好的答案。

以下部分從ANSI/VT100 Terminal Control Escape Sequences提供了一個示例。

Set Attribute Mode <ESC>[{attr1};...;{attrn}m 
Sets multiple display attribute settings. The following lists standard attributes: 
0 Reset all attributes 
1 Bright 
2 Dim 
4 Underscore 
5 Blink 
7 Reverse 
8 Hidden 

    Foreground Colours 
30 Black 
31 Red 
32 Green 
33 Yellow 
34 Blue 
35 Magenta 
36 Cyan 
37 White 

    Background Colours 
40 Black 
41 Red 
42 Green 
43 Yellow 
44 Blue 
45 Magenta 
46 Cyan 
47 White 

然而,它看起來不僅僅是你找到的標準顏色,這取決於設備的支持還有看起來是調色板機制的東西。

但是,請參閱此文章Bash tips: Colors and formatting (ANSI/VT100 Control Sequences瞭解更多密集列表以及其他鏈接。

對於256種前景色,轉義序列爲「[38; 5; ColorNumberm」,其中顏色編號ColorNumber來自所提供的表格。看起來'm'是顏色編號之後的必需字符。

對於256種背景色,轉義序列爲「[48; 5; ColorNumberm」。

+0

謝謝你是一個非常有用的網站@Richard – Stu

0

您可以使用24位顏色(注意,十六進制顏色不一定是24位,而你並不需要十六進制表示24位色):

printf "\x1b[${bg};2;${red};${green};${blue}m\n" 

例子:

printf "\x1b[38;2;255;100;0mTRUECOLOR\x1b[0m\n" 

但是,請注意,您的終端必須支持它(vt100當然不支持它,但一些軟件終端仿真器)。

還有256種顏色模式得到相當廣泛的支持 - 如果你想要16種以上的顏色,這可能是你最好的選擇。

來源:

https://gist.github.com/XVilka/8346728

0

VT100的從來沒有做顏色(參見常見問題的ncurses How do I get color with VT100?)。關於VT100的一個有用的信息來源是http://vt100.net

在OP的問題中的顏色序列在Control Functions for Coded Character Sets粗略記錄爲SGR(選擇圖形繪製)控制序列的值。這些以及xterm 256色擴展都記錄在XTerm Control Sequences中。互聯網上有許多地方可以找到有關這些控制序列的信息,但並非所有信息都是有用的信息來源。

相關問題