![如何在終端機中啟用 RGB 彩色輸出?](https://rvso.com/image/1047589/%E5%A6%82%E4%BD%95%E5%9C%A8%E7%B5%82%E7%AB%AF%E6%A9%9F%E4%B8%AD%E5%95%9F%E7%94%A8%20RGB%20%E5%BD%A9%E8%89%B2%E8%BC%B8%E5%87%BA%EF%BC%9F.png)
我正在嘗試使用 ANSI 轉義程式碼將彩色字串列印到 gnome 終端,但是,儘管它適用於自訂顏色,甚至 256 額外顏色,但它不適用於 RGB 程式碼。
所以,簡化一下:
cout << "\033[33m" << '.' << "\033[0m"; # prints with color
cout << "\033[38;5;135m" << '.' << "\033[0m"; # prints with color
cout << "\033[38;2;0;135;0m" << '.' << "\033[0m"; # doesn't work, prints with default color
如何在 gnome 終端機輸出帶有 RGB 顏色代碼的內容?
我正在關注此連結以獲取輸出:維基百科 ANSI 轉義碼。
我補充道:
$ export TERM=xterm-256color
我的 .bashrc 檔案支援 256 種顏色並且:
$ tput colors
輸出 256(如果這很重要)。
答案1
由於以下原因,RGB 顏色不能在終端機中使用:
- Bash 不選擇命令列顏色。
- Bash 只能指定 ANSI 顏色。
上述兩個原因是緊密相連的。其中大部分取決於您的螢幕和 ANSI 顏色規格。如果您使用良好的終端模擬器,您也許能夠為某些 ANSI 顏色代碼設定自訂 RGB 顏色。
Bash 作為 shell 對於螢幕可以對顯示器執行的操作無能為力。它只會將終端機上的文字傳遞到螢幕上。螢幕可以決定如何處理它。螢幕可以決定 ANSI 轉義碼代表什麼顏色(如果終端允許顏色)。
解決方法是更改終端顏色規格。然而,很少(我不知道)會允許你改變顏色。
答案2
您需要 vte >= 0.36 才能讓真彩色在 gnome 終端機中運作。確保您的 vte 足夠新,在這種情況下您的程式碼應該可以工作。
(注意:當您輸出硬編碼字串時,正如您在範例應用程式中所做的那樣, $TERM 的值必然是絕對不相關的。僅當您使用其行為依賴於此的程式庫(例如ncurses)時,它才重要。