495 Stimmen

Gibt es eine Möglichkeit, das tmux-Fenster beim Umschalten von einem kleineren auf einen größeren Monitor neu zu zeichnen?

Ich habe eine tmux-Sitzung auf einem kleineren Terminal gestartet. Wenn ich dieselbe Sitzung auf einem Monitor mit größerer Auflösung "anhänge", werden Punkte um die Konsole herum gezeichnet. Sie passen nicht in die neue Fenstergröße. Gibt es eine Möglichkeit, das Fenster neu zu zeichnen und zu reinigen? CTRL + L o CTRL - B + R ist nicht hilfreich.

696voto

Chris Johnsen Punkte 199970

tmux begrenzt die Abmessungen eines Fensters auf die kleinste Abmessung in allen Sitzungen, denen das Fenster zugeordnet ist. Wäre dies nicht der Fall, gäbe es keine sinnvolle Möglichkeit, den gesamten Fensterbereich für alle angeschlossenen Clients anzuzeigen.

Am einfachsten ist es, wenn Sie alle anderen Clients von den Sitzungen trennen, wenn Sie die Verbindung herstellen:

tmux attach -d

Alternativ können Sie auch alle anderen Clients in eine andere Sitzung verschieben, bevor Sie sich der Sitzung anschließen:

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

Der Bildschirm wird wieder verkleinert, wenn ein kleinerer Client in die Sitzung wechselt.

Es gibt auch eine Variante, bei der Sie das Fenster nur "übernehmen" (das Fenster mit einer neuen Sitzung verknüpfen, die aggressive-resize und alle anderen Sitzungen, in denen dieses Fenster aktiv ist, auf ein anderes Fenster umschalten), aber es ist im allgemeinen Fall schwieriger zu skripten (und unterscheidet sich von "exit", da Sie das Fenster entkoppeln oder die Sitzung beenden wollen, anstatt sich einfach von der Sitzung zu lösen).

564voto

Shi B. Punkte 5453

Sie können jederzeit auf CTRL - B + SHIFT - D um den Client auszuwählen, den Sie von der Sitzung trennen möchten.

tmux listet alle Sitzungen mit ihrer aktuellen Dimension auf. Dann trennen Sie sich einfach von allen kleineren Sitzungen.

203voto

gbin Punkte 2860

Eine einfachere Lösung auf neueren Versionen von tmux (getestet auf 1.9) können Sie jetzt tun :

tmux detach -a

-a gilt für alle anderen Clients in dieser Sitzung außer dem aktuellen Client

Sie können es in Ihrem .[bash|zsh]rc als Alias verwenden

alias takeover="tmux detach -a"

Arbeitsablauf: Sie können sich ganz normal mit Ihrer Sitzung verbinden, und wenn Sie durch eine andere Sitzung gestört werden, die die Größe Ihres tmux-Fensters erzwingt, können Sie einfach takeover .

75voto

datakid Punkte 1853

Dieser Beitrag steht bei der Suche immer noch an erster Stelle, ist aber nicht mehr gültig. Die beste Antwort finden Sie hier aber die Kurzfassung ist

<c-b>:resize-window -A

28voto

Patrick J. Holt Punkte 396

Sie können verwenden <Ctrl-B> : + at -d <CR> um das tmux-Fenster neu zu zeichnen.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X