$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を設定するにはどうすればよいですか?