混乱をクリーンアップするには、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:このソリューションを組み立ててくれたすべての人に感謝します。