バイナリファイルをcattingした後、tmuxステータスバーが破損しました。リセット方法を教えてください。


94

catバイナリファイルを作成した後、誤ってtmux端末を台無しにしました。今、私tmuxは台無しです。デタッチと再アタッチは役に立たず、再描画(Cb r)もしません。実行resetすると、アクティブなペインのみが再描画され、残りは再描画されません。屋内でssty saneも屋外でも実行しても効果tmuxはありません。

混乱したtmux

各ペインには、入力した内容から通常のフィードバックがあります(reset端末が台無しになった直後の最初の呼び出しでこれが解決されました)が、ステータスバーを修正できないようです。

gnome-terminal、ステータスバーを更新するたびに、ステータスバーが大きくなります(上のスクリーンショットを参照)。たとえば、これは、新しいアプリケーションを実行するとき、ペインを切り替えるとき、またはペインのサイズを変更するときに発生します。再描画を強制する(C-b r実行、resetまたはgnome-terminalメニューを使用)ことにより、ステータスバーが1行に縮小されますが、破損したままです。

ではxterm、ステータスバーには、1つのライン内に残るんが、写真のように、破損したままになります。

tmux 1.5を使用しています。

  • tmux-terminal を修正するにはどうすればよいですか?

2008年のこのバグレポートには同じ問題が記載されているようですが、修正済みとマークされています。修正されたバージョンはわかりませんが、tmux 1.5には2008年からの修正を含める必要があります。


この問題が発生しただけで、「クリア」が機能しました。
user149818 14

1
上記のすべてを行った後、誰かが同じ問題に遭遇した場合、私のtmuxステータスバーはまだ混乱しています。ウィンドウオプションのステータスを右に設定すると修復されました。

2
上記の提案は私にもそれを修正しました。:それを行うためのコマンドだったControl+ b+ :、その後set -g status-right "#H"、ホスト名にステータス-権を設定します。
Mayank

回答:


85

ウィンドウ4の名前を変更してみてください

  • ウィンドウ4に切り替えます: Control+b 4
  • ウィンドウの名前変更:Control+ b , Control+ umyNewname

(中央にコンマがあります)

または:Control+b :rename-window myNewname


1
ウィンドウの名前を変更することは魅力的です
-exhuma

4
新しい名前を入力する前に名前をクリアする必要があります。最も簡単な方法はであるctrl+uため、完全なシーケンスがあるctrl+b , ctrl+u newname
z0r

1
甘い-これbyobuも同様に機能します(f8, <newname>
-ali_m

なぜControl-u必要なのですか?Control-,すでに名前が変更されていますか?私の場合はそれが必要だったことを確認できますが、それは何らかのリセット文字ですか?
hbogert

1
Control-uは行をクリアします。端末ですべてのfatfingerパスワードを知っていれば、バックスペースを20回
押す

55

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


2
uname -n代わりに注意してくださいhostname -s。 オプションをgrokしない古いLinux / Unix上でホスト名が変更される可能性があるためhostnamerootコンテキストでは危険です。-shostname
ティノ

ペインのタイトルをリセットしないと悲しくなります。だから私はそもそもここにいるのです。ページ上で少なくともその欠点を認めている唯一の人であることに感謝します!
-EvanED

2
ウィンドウタイトルを修正した後、「tmux setw automatic-rename」も考慮してください
EB。

stty sane私の端末がめちゃくちゃになり、何も表示されなかったときに、この部分は助けてくれました。ありがとうございました!
ジョニー

「欠落ビット」、つまり左側のステータス領域に表示されている現在実行中のコマンドが必要な場合は、tmuxコマンドを使用できますset-window-option automatic-rename
デビッドフォースター

26

表示されている特定の問題は、ウィンドウ4の名前/タイトルに関係しています。長すぎる(明らかに)と、tmuxがそれをより短く測定する原因となる奇妙な文字の組み合わせ(したがって、ステータスバーを適切に制限できません)私はそれをリセットする方法がわかりません(私の場合はフォアグラウンドプロセスの名前を追跡します)、ウィンドウを閉じる必要があります。


4
ウィンドウの名前を変更するデフォルトは^b - ,
ロブ

8
@ロブさんのコメントでキーボードショートカットがあなたを混乱させる場合には、それはだCtrl- bそして,
ダグ・ポール・

ウィンドウの名前を変更すると、フィールドには現在のウィンドウ名が事前に入力されていることに注意してください(カーソルはその名前の最後にあります)。私のウィンドウ名はゴミの長いシーケンスであったBackspaceため、現在の名前をクリアするために1分間押し続ける必要がありました。私にとって、視覚的なフィードバックにより、古い名前全体が消去されたことが明らかになりました。
ダグポール

Ctrl-b :rename-window <name goes here> も使用できます。これは、そのコマンドのキーボードショートカットの代わりにtmuxコマンドシステムを使用します。
アッバフェイ


5
tmux set-option -g status off && tmux set-option -g status on 

ウィンドウ名以外の何かが破損していて、それが何であるかわからないとき、私のためにこれを修正しました。


2

tmux問題の一部を構成するだけかもしれません。stty saneコマンドラインで呼び出す必要がある場合があります。これにより、カーネル内のTTYドライバーが、通常は続行できるデフォルト値のセットにリセットされます。TTYドライバーが台無しになっている場合は、stty sane「ブラインド」と入力する必要があります。つまり、画面上のフィードバックはありません。


stty sane問題も解決しません。画面上のフィードバックはありますが、各tmuxペイン内で通常どおり入力してフィードバックを得ることができますが、tmuxが何か(新しいアプリケーションの実行、ペインの切り替えまたはサイズ変更)を行う必要があるとすぐに、ステータスバーがペインに移動します...
ヘリット

2

設定ファイルをリロードしてみてください?

Ctrlb、その後: :source-file ~/.tmux.conf


これまでのベストソリューション。
デイブ

-3

私のために問題を修正するには:

課題ペインとウィンドウを強制終了し、新しいウィンドウとペインを作成しました。

課題ペインで、CTRL+ AXおよびCTRL+ AC


再びこの方法。他の方法は助けにならない
かゆみ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.