$TERM
が必要です xterm-256color
になります tmuxの外部(zshを使用する「プレーン」端末内)、ただしscreen-256color
tmux内。
最初に試しました:
- add
export TERM='xterm-256color'
私の~/.zshrc
に 。 - add
set -g default-terminal "screen-256color"
私の~/.tmux.conf
に
さて、ターミナル(たとえば、xterm)を開くと、TERM
xterm-256color
です 、 どちらが正しい。しかし、tmuxを実行すると、TERM
再びxterm-256color
!
次に、~/.zshrc
の行をコメント化しようとしました 。さて、ターミナルを開くと、TERM
xterm
です 、そしてtmuxを実行すると、TERM
screen-256color
です 。したがって、TERM
を設定した場合のようです .zshrc
内 、tmuxは最初にTERM
を設定します screen-256color
へ 、シェル(zsh)を実行し、zshは.zshrc
を読み取ります TERM
をリセットします xterm-256color
へ 。
だから、TERM
を作る方法 xterm-256color
になります 「プレーン」端末で、screen-256color
tmuxで?
承認された回答:
TERM環境変数は、端末として機能しているアプリケーションによって設定される必要があります。これが重要なポイントです。内部で実行されているプログラムに、使用されている端末と、それがサポートする機能の種類を知らせます。
Zshは端末ではありません。シェルです。特別なことをしたい場合は、TERMが何に設定されているかを気にするかもしれませんが、設定の責任を負わないようにする必要があります。 それ。代わりに、スクリプトや他の子プロセスで使用できるZSH_VERSIONなどの変数を設定して、親シェルに期待される動作を理解する必要があります。
代わりに、使用しているターミナルアプリケーションの構成を確認し、適切にレポートするように依頼する必要があります。たとえば、この行を~/.Xdefaults
に追加することで、xtermに対してこれを行うことができます。 構成値に使用するファイル:
xterm*termName: xterm-256color
gnome-terminalは、独自のxterm構成ではなく、xterm構成がどのようになるかを読み取るというばかげたことをしているようです。これでうまくいく場合もありますが、より適切にgnome-256colorに設定する必要があります。これは、それ(および他のいくつかのVTEベースのターミナルエミュレーター)に対する長年の不満のようです。これを回避する一般的な方法は、設定されている別の値を悪用することです。
if [ "$COLORTERM" = "gnome-terminal" ]; then
export TERM=gnome-256color
fi
しかし、これはtmuxの問題に戻るので、すでに「screen-256color」や「screen」のようなものである場合は、TERMをリセットしないことでそれを説明する必要があります。
if [ "$COLORTERM" = "gnome-terminal" -a "$TERM" =~ xterm.* ]; then
export TERM=gnome-256color
fi
他の端末の場合は、適切な構成ルーチンを検索する必要があります。
関連:「画像をダウンロードに保存」を使用するときにSafariでkMDItemWhereFromsを設定するにはどうすればよいですか?