$TERM
tmux の外部xterm-256color
(zsh がある「標準」端末) にある必要がありますが、screen-256color
tmux の内部にある必要があります。
まず、次のことを試してください。
export TERM='xterm-256color'
私のアイテムに追加してください~/.zshrc
。set -g default-terminal "screen-256color"
マイアイテムに追加~/.tmux.conf
端末(xtermなど)を開くと、TERM
はいxterm-256color
、そうです。しかし、tmuxを実行するとTERM
再びxterm-256color
!
それから私をコメントアウトしてみました~/.zshrc
。これで端末を開くTERM
だけでxterm
、tmuxを実行するだけTERM
ですscreen-256color
。したがって、tmuxTERM
で最初に設定すると、に設定され、.zshrc
それを実行するシェル(例:zsh)が読み取られ、次にzshが読み込まれてリセットされるようです。TERM
screen-256color
.zshrc
TERM
xterm-256color
それでは、「一般」端末とtmuxでこれをどのように実行できますかTERM
?xterm-256color
screen-256color
答え1
TERM環境変数は、端末として機能するアプリケーションによって設定する必要があります。これがポイントです。実行中のプログラムがどの端末が使用されているのか、そしてどのタイプの機能をサポートしているのかを知ることができるようにすることです。
Zshは端末ではありません。シェルです。特別なことをしたい場合は、TERMが何に設定されているのか興味があるかもしれませんが、責任を負うべきではありません。環境それ。代わりに、親シェルで予想される動作を学習するためにスクリプトや他の子プロセスで使用できるZSH_VERSIONなどの変数を設定することを担当します。
代わりに、使用している端末アプリケーションの構成を確認し、それ自体が正しく報告するように依頼する必要があります。たとえば、構成値に使用されるファイルに次の行を追加することで、~/.Xdefaults
xtermに対してこれを行うことができます。
xterm*termName: xterm-256color
gnome-terminal この愚かなことをしているようです。独自の構成を持つのではなく、xterm構成を読み取ることです。これは場合によっては役立ちますが、vte-256colorでより正確に設定する必要があります。これは、この製品(および他のいくつかのVTEベースのターミナルエミュレータ)について長い間苦情しているようです。 ㅏ一般的な方法この問題に対する解決策は、設定した他の値を活用することです。
if [ "$COLORTERM" = "gnome-terminal" ]; then
export TERM=vte-256color
fi
しかし、それはtmuxの問題に戻るので、すでに「screen-256color」や「screen」のようなものであれば、TERMをリセットせずに問題を解決する必要があります。
if [ "$COLORTERM" = "gnome-terminal" -a "$TERM" =~ xterm.* ]; then
export TERM=vte-256color
fi
他の端末の場合は、正しい構成ルーチンを見つける必要があります。
答え2
.zshrcに次のように入力します。
[[ -n $TMUX ]] && export TERM="xterm-256color"
そして.tmux.confから
set -g default-terminal "screen-256color"