簡體   English   中英

xterm-color 和 xterm-256color 有什么區別?

[英]What is the difference between xterm-color & xterm-256color?

在嘗試設置我的終端程序以使用顏色時,我遇到了xterm-colorxterm-256color作為選項——也就是說,您可以將TERM環境變量設置為任何一個。

我想知道是否有人可以描述兩者之間的區別?

我已經在我的 Ubuntu 服務器以及我的 mac 上搜索了文檔,但沒有找到任何文檔。 我只能在/usr/share/terminfo中找到各種二進制文件。

xterm-256color描述了支持 256 colors 的 Xterm。 xterm-color描述了支持八個 colors 的 Xterm 的舊分支。不推薦使用xterm-color ,因為它描述了功能較差且您不太可能使用的 Xterm 變體。 通常您需要使用xtermxterm-16colorxterm-256color

特別是, xterm-256color是從 Mac OS X 10.7 Lion 開始的終端的默認值,下一個最佳推薦值是xterm-16colorxterm (僅描述了對八種 ANSI 顏色的支持)。 在 10.7 之前, xterm-color是默認設置,因為終端不支持推薦的 Xterm terminfo 值描述的一些關鍵功能,例如背景顏色擦除 (BCE)、用於切換主/備用屏幕的現代代碼、256 colors。

有時人們明確地將TERM設置為xterm-color (與推薦的 Xterm 值相反)以禁用功能或解決特定計算機上可用的 terminfo 值與正在使用的終端仿真器之間的不兼容問題。

請注意,從技術上講,Terminal 應該有自己最新的 terminfo 值來准確描述它支持的功能,而不是使用 Xterm 的值,但是:

  1. 目前沒有一個是最新的。 nsterm代表 Terminal 來自 NeXTSTEP 的祖先。 顯然有人最近更新nsterm (過去幾年的某個時候),但我不知道它是否已經進入 ncurses 發行版,並且它可能不完全與 10.7 中的終端同步。
  2. 許多程序和 shell 自定義腳本明確檢查$TERM是否以(或等於) xterm開頭。 因此,一些用戶仍然需要了解如何將推薦的 Xterm 值與終端一起使用以與這些值兼容。

如果您不熟悉 terminfo 系統,請查看 x-man-page://5/terminfo 手冊頁。 此外,您可以使用infocmp命令查看當前的 terminfo 設置或比較兩個不同的設置,例如, infocmp xterm-color xterm-256color將向您顯示這兩者之間的所有差異。

看起來xterm-256color是 OS/X 上的 Terminal.app。 差異並不小——我在 Ubuntu 盒子上使用 infocmp'd xterm-colorxterm-256color並對它們進行了一些標准化,得到了很多差異。 我什至可以說xterm-256color不再是真正的 xterm。

通常,當您使用特定的終端仿真器時,您需要“只知道”哪個 terminfo 條目最適合它。 它們是一對匹配的,盡管有時您可以,例如,在 vt220 終端上使用 vt100 terminfo 條目。

從好的方面來說,今天幾乎所有東西都與 vt100 兼容。

根據ncurses FAQxterm-color早已過時:

最初,xterm-color 對應於 1990 年代中期的 color_xterm。 它在 1996 年被 XFree86 xterm 取代。

終端數據庫提供了詳細信息。 它最初打算用作通用終端描述,但從一開始就沒有成功,因為它不匹配XFree86 xterm ,尤其是顏色行為(即背景顏色擦除功能)。 現在沒有人使用nxterm

xterm-256color終端描述是通過修改顏色行為(添加更多 colors,但添加背景顏色擦除功能)從 (XFree86) xterm 終端描述構建的。使用infocmp查看差異:

$ infocmp xterm-color xterm-256color |wc -l
122
$ infocmp xterm xterm-256color |wc -l
14
$ infocmp xterm xterm-256color
comparing xterm to xterm-256color.
    comparing booleans.
        ccc: F:T.
    comparing numbers.
        colors: 8, 256.
        pairs: 64, 32767.
    comparing strings.
        initc: NULL, '\E]4;%p1%d;rgb\:%p2%{255}%*%{1000}%/%2.2X/%p3%{255}%*%{1000}%/%2.2X/%p4%{255}%*%{1000}%/%2.2X\E\\'.
        oc: NULL, '\E]104\007'.
        rs1: '\Ec', '\Ec\E]104\007'.
        setab: '\E[4%p1%dm', '\E[%?%p1%{8}%<%t4%p1%d%e%p1%{16}%<%t10%p1%{8}%-%d%e48;5;%p1%d%;m'.
        setaf: '\E[3%p1%dm', '\E[%?%p1%{8}%<%t3%p1%d%e%p1%{16}%<%t9%p1%{8}%-%d%e38;5;%p1%d%;m'.
        setb: '\E[4%?%p1%{1}%=%t4%e%p1%{3}%=%t6%e%p1%{4}%=%t1%e%p1%{6}%=%t3%e%p1%d%;m', NULL.
        setf: '\E[3%?%p1%{1}%=%t4%e%p1%{3}%=%t6%e%p1%{4}%=%t1%e%p1%{6}%=%t3%e%p1%d%;m', NULL.

因為 xterm-color 已經過時,它在很大程度上被忽略了,直到 Apple 的一些(當然是匿名的)開發人員決定將它重新用於 Terminal.app(在 10.5 Leopard中),盡管它不太合適。 ncurses 中的nsterm-16color描述是由某人(顯然在 Apple 之外)貢獻的,以匹配 10.5 的行為。 雖然 xterm-color 使用8 colors,但人們可能會猜測 nsterm-16color 使用16 也許這導致了用戶的困惑。 在任何情況下,Terminal.app 的終端描述選擇對 Terminal.app 沒有影響,除了設置TERM環境變量,許多應用程序使用它來決定如何使用終端。

有趣的是,盡管大部分 MacOS 用戶區都來自 BSD,但它的 ncurses 配置卻不是。 MacOS 有 tic/infocmp 實用程序,與 BSD 不同(盡管 Apple 已經十多年沒有更新它了:ncurses 5.7 於2008年發布)。 在更高版本的 MacOS 中,Terminal.app 的開發人員更改了菜單以提供“xterm-256color”而不是“xterm-color”。 這並沒有改善用戶體驗,因為使用相應終端描述的終端行為仍然不同。 ncurses 常見問題解答提到:

此外,據報道 Mac OS X 10.7 使用 xterm-256color 作為默認 $TERM 值。 這在幾個方面不同於 xterm-color,特別是對 bce 的支持。 它還不同於推薦的 nsterm-256color(infocmp 報告 111 個差異)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM