私の質問は、理解の必要性から生じますなぜ私は今(複数の試行の後)ターミナルとtmuxは256色をサポートし、tput colors
は8色しかないことを教えてくれます。
最初から始めましょう。
Ubuntuボックス、Guake、tmux、Vimと私はテーマSolarizedが大好きです。それらはかなりひどく見えたので、256色のサポートを有効にして、少し遊んでみることにしました。
私のTerminalがどうなるか見てみましょう。 tput colors
は、8色あると言っています。個人的には左側を紫に設定し、右側がもちろん右側に2種類の青の濃淡があります。 $TERM
はxterm
と言います。 (色付きのls
I eval
this を.bashrc
に含めるには。)
Vimも正常に見えますが、256色がサポートされている環境で256
フラグを使用して呼び出しますnotがサポートされています。
set t_Co=256
let g:solarized_termcolors=256
colorscheme solarized
色空間の減少について不満を言うのは、tmuxだけです。 tmux
を呼び出すと、「間違った」期待される結果が得られます。
しかし、tmux
を-2
フラグ付きで呼び出すと、すべてが正常に機能しますmagically。
今私が理解している唯一のことは、-2
がexport TERM=screen-256color
( source )と同等であることです。
GuakeはTerminalと同様に動作し、どちらもxterm
を質問echo $TERM
に回答します。
基本的に、誰もがそうでない場合でもすべてが機能する理由を理解していますか?
xterm
で このスクリプト (わずかに変更された)を実行すると、次の結果が得られます。256色ですが、16色しか正しく表示されません。
次に、端末のプロファイルを変更すると、これらの16色も変更されます。
より多くのテストが続いています。
左から右、上から下に、Solarizedカラーテーマ、dircolor
ansi-dark
および256dark
があり、その後デフォルト(Tango)配色、dircolor
ansi-dark
および256dark
。
観察:理論的には、dircolor
ansi-dark
のSolarizedカラースキームはdircolor
と厳密に一致している必要があります256dark
。これは、リストされている特定のファイルでは明確に発生していません。代わりに、作業ディレクトリにフォルダー、テキストファイルおよびシンボリックリンクがあると、これはかなり起こります。 結論:256dark
色をエンコードする際に注意が払われていません。
xterm
は、tput colors
のコメントにかかわらず、256色をサポートしています。プログラムはansi
パレット(ユーザーがカスタマイズ可能)を参照するか、合計256色から選択して色を定義できます。
tmux FAQ に256色のサポートに関する情報があります。
端末がサポートする色の数を検出することは、歴史的な理由により、残念ながら簡単ではありません。説明については、 端末エミュレータがサポートする色数の確認 を参照してください。この意味は
Tmuxを使用している場合、対話する端末はtmuxです。 xtermのすべての制御シーケンスをサポートしているわけではありません。特に、色の値を照会または設定するためのOSC 4 ; …
制御シーケンスをサポートしていません。 tmux外のxtermで直接実行しているときに、それを使用する必要があります。
tmux -2
を実行すると、端末が256色をサポートしているとは考えられていなくても(かなり一般的です)、tmuxは256色のサポートから始まります。
デフォルトでは、tmuxは256色のサポートなしでscreen
として自分自身をアドバタイズします。 .tmux.conf
のTERM
の値を変更して、256色のサポートを示すことができます。
set -g default-terminal "screen-256color"
UbuntuではTERM=xterm-256color
またはTERM=screen-256color
を使用できます。これらの値は、これらの名前のtermcap/terminfoエントリがないリモートマシンにログインした場合にのみ問題を引き起こします。エントリをリモートマシンのホームディレクトリにコピーできます。これは、最新のterminfo実装で機能します。
# From the Ubuntu machine to a machine that doesn't have *-256color terminfo entries
ssh somewhere.example.com mkdir -p .terminfo/s .terminfo/x
scp -p /lib/terminfo/s/screen-256color somewhere.example.com:.terminfo/s/
scp -p /lib/terminfo/x/xterm-256color somewhere.example.com:.terminfo/x/
solarized directory colorsに関連する限り、追加の実験のみに対処する補足的な回答を提供します。
セットアップ
テストスクリプトからの同じカラー出力があります。唯一の違いは、OpenBoxでslim、xcompmgrでlxterminal
を使用したことですDMなし。したがって、ターミナルエミュレータはGUIでこれらの設定を提供せず、特定の theme がないため、カスタムパレットを簡単に設定することはできません(これらはいくつかのターミナルエミュレータにのみ存在します) )。だから私はいくつかの半透明の装飾されていない端末とその青を前景色として使用し、背景は青Gentooです。 ansiバージョンのカラーファイルを使用できないため、dircolors.256dark
を使用して結果を取得することに専念しました。つまり、「劣化した」単純なバージョンです。
次の関連設定とinconsolata中型フォントを使用しました。
echo $TERM
xterm
.bashrc:
eval `dircolors /path/to/dircolors.256dark`
.vimrc:
set t_Co=256
let g:solarized_termcolors=256
syntax enable
set background=dark
colorscheme solarized
.tmux.conf:
nothing at all related to colors!
start tmux with "tmux -2"
Dircolors
以下の画像は、これらの設定でtmuxの内部と外部の両方で何が発生するかを示しています。左側の最初の3分の1は、装飾されていないlxterminalウィンドウを縦に積み重ねたものです(3)。右側には、同じプログラムを示すtmuxアセンブリがあります(3)また、solarizedxterm
1 フルパッケージ に含まれる.Xresourcesファイルを使用してnanoを表示(およびxrdb -load ~/.Xresources
でサンプリング):
右クリック/画像を表示してフル解像度で検査してください
左上隅の最初のターミナルは、デフォルトのディレクトリの色を示しています。すぐ下は、劣化したsolarizedバージョンです。追加した.c
ファイルのピンクの背景に青色の背景を除いて、これから予想されるものと同じです(下の画像を参照してください)。デフォルトと比較して、それは拡張属性、つまりボールド/ライト/リバースなどにさらに基づいており、色は明らかに異なります。多くのディストリビューションの.txt
ファイルのデフォルトの色割り当ては緑ですが、solarizedの場合は代わりに灰色にする必要があります。 ansiファイルが.txtファイルを緑色としてレンダリングすると、正しくレンダリングされないか、まったくレンダリングされません。あなたが示した右側の結果は、次の参照との関係で正しいもの(256dark)です:
solarized "degraded" dircolorsリファレンスマップ
観察
私が使用した構成では、結果はtmuxの内部と外部で同じように見えます(viではコメント(#)が逆になっていますが、それ以外の場合、プラグインは正常に動作し、マルチプレクサは影響しませんこれについて)。フォントはsolarized機能の定義で大きな役割を果たし、エクスペリエンスを最大化するには適切なフォントが必要です。 256darkファイルを使用したsolarizedディレクトリの色は参照と一致し、特定の端末エミュレーター構成は必要ありません。
結論
実際、ディレクトリの色のansiレンダリングは、劣化したsolarized(256dark)とは 完全に異なる です。 ansiの下の.txt
ファイルは緑色になるほどです。一方を他方のレンダリングの検証に使用することはできません。どちらのソリューションも異なる構成を必要とし、まったく異なる結果を生成します。