web-dev-qa-db-ja.com

$ TERMが正しいことはどのくらい重要ですか?

最近 rxvt-unicode から st に切り替えました。つまり、私は$TERM=rxvt-unicode-256colorから$TERM=st-256colorに移行しました。

スイッチに満足しており、stを引き続き使用します。ただし、特定のターミナルアプリケーションが新しい$TERM値に不満を持っていることに気付きました。たとえば、$TERM$TERM=xterm-256colorのように認識できるものだと思って「騙して」いない限り、emacsはフルカラーサポートでstに読み込まれません。

私の質問は、単に$TERM=xterm-256colorを設定するリスクは何ですか? $TERM=*-256colorの重要な部分は256color部分であり、*の値はそれほど重要ではないように思えます。

5

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を修正することです。

参考文献

11
JdeBP