web-dev-qa-db-ja.com

小さなモニターを大きいモニターに切り替え時にtmuxウィンドウを再描画する方法はありますか?

Terminal.appを使ってssh経由でリモートサーバーに接続しているとしましょう。あなたが以前にtmuxを始めたより小さなものからより大きな解像度のモニターで「tmux attach」するとき、それはコンソールの周りに点を描画します。新しいウィンドウサイズには合いません。ウィンドウを再描画してきれいにする方法はありますか? CTRL+L または CTRL - B + R 助けにはならない。私は人に適切な命令を見つけることができませんでした。

% tmux -V
tmux 1.5
348
Nobu

tmuxウィンドウが接続されているすべてのセッションで、ウィンドウのサイズを各サイズの最小値に制限します。そうしなければ、接続されているすべてのクライアントのウィンドウ領域全体を表示するための賢明な方法はありません。

アタッチするときに最も簡単なことは、セッションから他のクライアントを切り離すことです。

tmux attach -d

あるいは、セッションにアタッチする前に他のクライアントを別のセッションに移動することもできます。

takeover() {
    # create a temporary session that displays the "how to go back" message
    tmp='takeover temp session'
    if ! tmux has-session -t "$tmp"; then
        tmux new-session -d -s "$tmp"
        tmux set-option -t "$tmp" set-remain-on-exit on
        tmux new-window -kt "$tmp":0 \
            'echo "Use Prefix + L (i.e. ^B L) to return to session."'
    fi

    # switch any clients attached to the target session to the temp session
    session="$1"
    for client in $(tmux list-clients -t "$session" | cut -f 1 -d :); do
        tmux switch-client -c "$client" -t "$tmp"
    done

    # attach to the target session
    tmux attach -t "$session"
}
takeover 'original session' # or the session number if you do not name sessions

小さなクライアントがセッションに切り替えると、画面は再び縮小します。

ウィンドウを「引き継ぐ」(ウィンドウを新しいセッションにリンクし、aggressive-resizeを設定し、そのウィンドウがアクティブになっている他のセッションを他のウィンドウに切り替える)だけのバリエーションもあります。一般的な場合(そして単にセッションから切り離すのではなく、ウィンドウのリンクを解除したりセッションを終了したりする必要があるため、「終了」とは異なります)。

502
Chris Johnsen

あなたはいつでも押すことができます CTRL - B + SHIFT - D セッションから切り離すクライアントを選択します。

tmuxはすべてのセッションを現在のディメンションとともにリストします。それからあなたは単にすべての小さいサイズのセッションから切り離します。

394
Shi B.

最近のバージョンのtmux(1.9でテスト済み)をより簡単に解決する方法は次のとおりです。

tmux detach -a

-aは、現在のセッションを除く、このセッションの他のすべてのクライアント用です。

あなたはあなたの中でそれを別名にすることができます。[bash | zsh] rc

alias takeover="tmux detach -a"

ワークフロー:あなたは普通にあなたのセッションに接続することができます、そしてあなたがあなたのtmuxウィンドウサイズを押し下げた別のセッションによって悩まされるならばあなたは単にtakeoverを呼ぶことができます。

166
gbin

私はちょうどこの問題に遭遇し、異なる状況に出くわしました。それはおそらく単なるユニコーンですが、私はそれをレイアウトすると思いました。

私は小さいセッションを1つ持っていました、そして私はフォントサイズが異なることに気付きました:小さいセッションはより小さいフォントを持っていました。どうやら私はウィンドウのフォントサイズを何らかの理由で変更しました。

それで、OS Xでは、私は小さいサイズのセッションでCmd-+をしただけでした、そしてそれは元の位置に戻りました。

3
JESii

私はクライアントを接続していただけなので、他の答えは役に立ちませんでした(前のセッションを開始したものは既に分離されていました)。

それを修正するために、私は答えに従いました ここ (私はxtermを使っていませんでした)。

単純に言った:

  1. Tmuxセッションから切り離す
  2. resize linuxコマンドを実行します。
  3. Tmuxセッションに再接続
3
pev.hall