web-dev-qa-db-ja.com

xterm-colorとxterm-256colorの違いは何ですか?

端末プログラムで色を使用するように設定しようとすると、xterm-colorxterm-256colorの両方のオプションが見つかりました。つまり、TERM環境変数をどちらかに設定できます。

私は誰かが2つの違いを説明できるかどうか疑問に思っていましたか?

UbuntuサーバーとMacでドキュメントを検索しましたが、見つかりませんでした。 /usr/share/terminfoでは、さまざまなバイナリファイルしか見つけることができませんでした。

19
user12345

xterm-256colorは、256色のサポートを有効にしたXtermについて説明しています。 xterm-colorは、16色をサポートするXtermの古いブランチについて説明しています。 xterm-colorは、あまり機能的ではなく、使用する可能性が低いXtermのバリアントを説明しているため、お勧めしません。通常、xtermxterm-16color、またはxterm-256colorを使用します。

特に、xterm-256colorはMac OS X 10.7 Lion以降のターミナルのデフォルトであり、次に推奨される値はxterm-16colorまたはxterm(8つのANSIカラーのサポートのみを説明)です。 )。 10.7より前は、xterm-colorがデフォルトでした。これは、ターミナルが、推奨されるXtermのterminfo値で説明されている重要な機能(背景色消去(BCE)、メイン/代替画面を切り替えるための最新コード、256色など)をサポートしていないためです。

特定のコンピューターで使用可能なterminfo値と使用されているターミナルエミュレーターとの間の非互換性を回避したり、機能を無効にするために、(推奨されるXterm値ではなく)TERMを明示的にxterm-colorに設定することがあります。

技術的には、ターミナルは、Xtermの値を使用する代わりに、サポートする機能を正確に説明する独自の最新のterminfo値を持つ必要がありますが、

  1. 現在最新のものはありません。 nstermはNeXTSTEPのターミナルの祖先を表します。誰かが最近nstermを更新したようです(過去数年のうちのいずれかです)が、それがncursesディストリビューションに組み込まれたかどうかはわかりません。ターミナルが最新の状態ではない可能性があります10.7。
  2. 多くのプログラムとシェルカスタマイズスクリプトは、$TERMxtermで始まる(または等しい)かどうかを明示的にチェックします。そのため、一部のユーザーは、ターミナルとの互換性のために、ターミナルで推奨されるXterm値を使用することについて知る必要があります。

Terminfoシステムに慣れていない場合は、x-man-page:// 5/terminfoのマニュアルページをご覧ください。また、infocmpコマンドを使用して、現在のterminfo設定を表示したり、2つの異なる設定を比較したりできます。たとえば、infocmp xterm-color xterm-256colorは、これら2つの違いをすべて表示します。

37
Chris Page

xterm-256colorはOS/X上のTerminal.appです。違いは小さなものではありません-私はinfocmpしたxterm-colorおよびxterm-256color Ubuntuボックスで、それらを少し正規化し、かなりの数の違いがありました。 xterm-256colorは、もはやxtermではありません。

通常、特定のターミナルエミュレータを使用する場合は、どのterminfoエントリが最も適切に機能するかを「知る」必要があります。それらは一致するペアですが、たとえば、vt220端末でvt100 terminfoエントリを使用できる場合もあります。

プラスの面として、ほとんどすべてが今日vt100互換です。

5
user1277476

ncurses FAQ によると、 xterm-color は長い間廃止されています:

元々、xterm-colorは1990年代中頃のcolor_xtermに対応していました。これは1996年にXFree86 xtermに置き換えられました。

ターミナルデータベースは詳細を提供します。元々は汎用的な端末の説明として意図されていましたが、最初は一致しなかったため成功しなかったXFree86 xterm、特に色の動作(つまり、 back color erase feature)。現在nxtermを使用している人はいません。

xterm-256color 端末の説明は、(XFree86)xtermの端末の説明から、色の動作を変更することで構築されます(色を追加しますが、not背景色の消去機能。 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.5Leopardで再利用することを決定するまで、ほとんど無視されました)、ただし適合度は低いです。ncursesの nsterm-16color の説明は、10.5の動作と一致するように(アップル社外のように)誰かによって提供されました。 -colorは8色を使用します。nsterm-16colorは、16。おそらくそれがユーザーの混乱の原因でした。いずれにしても、Terminal.appの端末の説明を選択しても効果はありませんでしたターミナルの使用方法を決定するために多くのアプリケーションが使用するTERM環境変数を設定する以外に、Terminal.appで。

興味深いことに、MacOSユーザーランドの多くはBSDからのものですが、そのncurses構成はそうではありません。 MacOSには、BSDとは異なり、tic/infocmpユーティリティがあります(ただし、Appleは10年以上更新していません:ncurses 5.7は 2008 でリリースされました) 。MacOSのそれ以降のリリースでは、Terminal.appの開発者はメニューを変更して、「xterm-color」ではなく「xterm-256color」を提供しました。対応する端末の説明を使用した端末の動作がまだ異なるため、ユーザーエクスペリエンスは改善されませんでした。 ncurses FAQ は次のように述べています:

さらに、Mac OS X 10.7はデフォルトの$ TERM値としてxterm-256colorを使用すると報告されています。これは、いくつかの点でxterm-colorと異なります。特に、bceのサポートは異なります。また、推奨されるnsterm-256colorとは異なります(infocmpは111の違いを報告します)。

1
Thomas Dickey