特にSSHの後に「eterm-color」が使用できない場合、emacsのansi-termの$TERMの正しい値は何ですか?

特にSSHの後に「eterm-color」が使用できない場合、emacsのansi-termの$TERMの正しい値は何ですか?

私の現在の設定は次のとおり$TERMですxterm-256color

if [[ -n "$EMACS" ]]; then
    export TERM=xterm-256color
    alias emacs="emacsclient --no-wait"
    export EDITOR="emacsclient --no-wait"
    export VISUAL="emacsclient"
fi

私はそれを設定しようとしましたがeterm-color、問題はSSH経由でログインしているほとんどのコンピュータでこの端末タイプを使用できないことです。

.bashrcUbuntuのデフォルト設定は、TERM変数が:で始まることを確認しますxterm-。この場合、ウィンドウのタイトルを設定しようとします。

PS1="\[\e]0;${debian_chroot:+($debian_chroot)}\u@\h: \w\a\]$PS1"

問題は\[\e]0;立場にある。 xterm準拠の端末エミュレータで解析する必要がありますが、emacs(ansi-term)はこれを行いません。結果は次の端末です。

0;user@host: ~user@host:~$ 

readlineまた、入力したテキストが端末の幅より大きい場合に使用されるアプリケーションの一部がクラッシュします。

eterm-colorこの値に設定すると、一部のリモートホストでは使用できずインストールできないため、問題が発生しますless

ほとんどのディストリビューションに同梱されている他の種類のターミナルやハンガーを認識できるハッキングなど、使用できるトリックはありますか?関連エスケープコードヘッダを設定しますか、それともちょうど捨てますか?

ベストアンサー1

リモートホストでどの端末を使用できるかを具体的に調べ、設定する方法を見つけました。通常、Ansi互換端末が1つ以上あるため、偽造に「ハッキング」は必要ありません。

これは、次のような長いSSHコマンドで行われます。

ssh -i ~/.ssh/some_key.pub -tty some_remote_server "export TERM=`ls -1R /usr/share/terminfo | grep ^eterm-color$ || ls -1R /usr/share/terminfo | grep ^aterm $ || ls -1R /usr/share/terminfo | grep ^ansi$ ||

これは、リモートホストで、好みに応じて異なるANSI互換(および非互換)端末タイプを見つけ、EMACSを起動する前に見つかった最初の端末タイプを設定します。希望のタイプが見つからない場合は、「xterm」タイプを使用するようにTERMを設定してEMACSを起動します。

この例では、eterm-color、aterm、ansi、xterm-256colorを順番に探しています。私はEMACSを多用するユーザーではないので、これが本当に最高かどうかはわかりません。 CentOSでこのスタートアップをテストしましたが、うまくいきました(テストでeterm-colorが見つかりました)。

私はterminfoがほとんどの/すべてのLinuxバリアントで同じ場所にあると思いますが、より多くの端末を追加するのと同じように、検索するパスを追加できます。

|| ls -1R /a/その他/パス grep ^他の端末$
条件付きテストと配管。

おすすめ記事