混乱をクリーンアップするには、2つのコマンドシーケンスが必要です。
まず、これを文字化けしたウィンドウで実行します(これはにいるときでも機能しますssh)。
stty sane; printf '\033k%s\033\\\033]2;%s\007' "`basename "$SHELL"`" "`uname -n`"; tput reset; tmux refresh
次に、これを実行するコンピューターで実行しますtmux(これはの内部および外部で機能しますtmux)。
次のコマンドはすべてのtmuxインスタンスに影響し、現在のウィンドウ以外の左側のステータスを変更する場合があります。その機能が必要ない場合は、そのままにしておきます。
tmux list-windows -a | while IFS=: read -r a b c; do tmux set-window-option -t "$a:$b" automatic-rename on; done
詳細に説明
これは、他の回答やコメントで見つかったすべてのビットに対処するために組み立てられました。現在、2番目のコマンドにはわずかなビットしか残っていないようです。(以下の「欠落ビット」を参照)。
これがどのように機能するかを理解するために、最初にtmuxとのステータス行を削除しましょうtty。その後、(commandとは異なりreset)常に利用できるメソッドを使用して、再度修正します。
tmux端末をUTF-8使用できないようにする方法(想定)
stty -echo; printf '\016\033k%2000s\\\033\033]2;\355\007' $'\302\217'
警告:上記のコマンドを実行した後、シェルは盲目で耳が聞こえないように見え、未知の外国語ででたらめにしか話せないようです。これを修復する方法については、以下を参照してください。
説明:
stty -echo 端末タイプの応答を強制終了します
printf '\016'を行うSOので、代替文字セットにいます
printf '\033]2;%s\007' 'right status text'この場合には、右の状態を設定し$'\355、プレゼンテーションのバグを公開」
printf '\033k%2000s\033\\' $'\302\217' ウィンドウのタイトル名を設定します
これは、一部の対話型コマンドがクラッシュしてシェルに戻った後に端末で表示できる組み合わせです。(/bin/catあなたがstty -echo私見を引き起こすことはできませんが、vim通常のような対話型コマンドはこれを設定します。)
今、この混乱をクリーンアップ
stty sane; printf '\033k%s\033\\\033]2;%s\007' "$(basename "$SHELL")" "$(uname -n)"; tput reset; tmux refresh
注:コピーアンドペーストを使用する場合(おそらくShift貼り付け中に長押しする必要があります)、上記のコマンドを使用してtty。したがって、これを貼り付けた後、盲目的にEnterキーを押してください。
説明:
stty sane 「正常な」端末パラメータを設定するため、入力中にエコーが返されます
printf '\033k%s\033\\' "$(basename "$SHELL")"ウィンドウのタイトルを通常に戻します。tmux rename-window "$(basename "$SHELL")"代わりに使用することもできますが、エスケープシーケンスが常に機能tmux rename-windowするtmux場所に限定されます。
printf '\033]2;%s\007' "$(uname -n)"ステータス権利をリセットしてデフォルトとして表示します。(を使用しないでください。破損しtmux set status-right "something"たpane titleものを出力するstatus-rightだけであり、プレゼンテーションのバグを露呈するだけです。またtmux、ペインのタイトルを直接設定するコマンドが見つかりませんでした。)
tput reset これが台無しにされた場合に備えて、端末をリセットします
tmux refresh 画面を更新して、表示された可能性のある他のゴミを取り除きます
不足しているビット
これにより、左側のステータス領域に現在のコマンドを表示printf '\033k%s\033\\' "$(basename "$SHELL")"する標準機能が失わtmuxれます。printf '\033k%s\033\\' "something"実行された後、この能力は失われ、私はまだ良い方法を見つけられませんでしたが、以前のように戻す方法を見つけました。
ただし、以下のコメントに記載されているように、tmux次のtmux設定の代替として同様の機能を有効にできます。
set-window-option automatic-rename on
どちらかが中にこの操作を行うtmuxと、現在のウィンドウで到達することができ、コマンドライン、「エスケープ」:(ここで、「エスケープ」あなたであるtmuxコマンドキー)してから、コマンドを入力します。
またはtmux set-window-option automatic-rename on、現在の端末で実行しますが、適切なシェルレベルに直接移動していない場合は失敗します。たとえば、sudoまたはで動作しませんssh。
または、現在のtmuxセッションで別のウィンドウを開き、次のコマンドを実行します。
for a in `tmux list-windows | sed 's/:.*//'; do tmux set-window-option -t "$a" automatic-rename on; done`
またはtmux、実行中のコンピューターに対して別のシェルを開き、次のコマンドを実行します(これはtmuxの外部にあります)。
tmux list-windows -a | while IFS=: read -r a b c; do tmux set-window-option -t "$a:$b" automatic-rename on; done
PS:このソリューションを組み立ててくれたすべての人に感謝します。