最近 rxvt-unicode から st に切り替えました。つまり、私は$TERM=rxvt-unicode-256color
から$TERM=st-256color
に移行しました。
スイッチに満足しており、st
を引き続き使用します。ただし、特定のターミナルアプリケーションが新しい$TERM
値に不満を持っていることに気付きました。たとえば、$TERM
が$TERM=xterm-256color
のように認識できるものだと思って「騙して」いない限り、emacs
はフルカラーサポートでst
に読み込まれません。
私の質問は、単に$TERM=xterm-256color
を設定するリスクは何ですか? $TERM=*-256color
の重要な部分は256color
部分であり、*
の値はそれほど重要ではないように思えます。
TERM
の値の重要な部分は、terminfoまたはtermcapデータベースのエントリと一致すること、およびそのエントリが端末を正しく説明していることです。
端末がXTermであることが露骨にそうでない場合は、ソフトウェアにそれを合理的に伝えることはできません。また、他のターミナルエミュレータがXTermと同じ入出力制御シーケンスをすべて使用したり、同じ機能をすべて提供したりすることを考えると、まったくの間違いになります。
_-256color
_は単にnameの一部であり、ほとんどのソフトウェアに固有の意味はありません(ただし、機能のサフィックスを探す人はほとんどいません) )。 terminfo/termcapデータベース内のエントリーを名前でファミリーにグループ化するのは人間であるため、(主に)人間にとってのみ意味があります。端末タイプ名の機能サフィックスは、ソフトウェアではなく人間にとって主なものです。
ソフトウェアにとって意味のあることは、データベース内のレコードがそのように名付けられていることで、端末が256色をサポートし、制御シーケンスを提供するかどうかです。そのタイプの端末でそれらを使用します。
そうは言っても、emacsは独自のことを行い、terminfo/termcapデータベースに単純に依存するわけではありません。たとえば、その_frame-set-background-mode
_関数はTERM
の値と^\\(xterm\\|\\rxvt\\|dtterm\\|eterm\\)
を照合することがわかっていますが、これはおそらく最近では間違っています。ここでの正しいアプローチは、最終的に_st-256color
_端末タイプ(および_PuTTY-256color
_、_vte-256color
_など)を正しく認識するようにemacsを修正することです。