GNU/Linux >> Linux の 問題 >  >> Linux

Zsh:TmuxではTerm =screen-256colorを設定しますが、TmuxなしではXterm-256color?

$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を設定するにはどうすればよいですか?
Linux
  1. どのターミナルエミュレータがTmux制御モードをサポートしていますか?

  2. VimがTmux内で実行されていませんか?

  3. コマンドはZshで見つかりませんが、Bashで見つかりましたか?

  1. 再印刷せずにターミナルで印刷されたメッセージを更新する方法

  2. root アクセスなしで zsh をインストールしますか?

  3. tmux Ctrl+B が機能しない

  1. tmuxがLinuxターミナルでどのように喜びを刺激するか

  2. どちらの端末が優れているか:BashとZsh

  3. アクティブな tmux タブの色を設定する