Windows in tmux neu nummerieren

128

Ich habe häufig mehr als zehn Fenster in tmux. Später schließe ich einige meiner älteren. Gibt es eine Möglichkeit, Fenster 15 in Fenster 3 (das es nicht mehr gibt) neu zu nummerieren? Oder bis packsie alle wieder aufstehen, damit es keine leeren Slots gibt? Ich würde das gerne tun, weil es schwierig ist, zu Fenstern mit höheren Nummern zu springen, weil Sie das nicht können Ctrl+B, 15. Ich muss verwenden, Ctrl+B, wum die Fenster aufzulisten, und dann den Buchstaben eingeben, der dem Fenster entspricht, das ich öffnen möchte.

Ich weiß, dass ich Fenster tauschen kann. Zum Beispiel könnte ich ein neues Fenster ( Ctrl+B, c) erstellen, das sich in dem leeren Steckplatz 3 öffnen würde. Ich kann dann swapwFenster 15 und Fenster 3 öffnen und dann Fenster 15 schließen. Dies ist offensichtlich ein mühsamer Ansatz.

Wie managen Sie viele Fenster in tmux?

Dogbane
quelle

Antworten:

123

Sieht aus wie Sie das brauchen:

move-window [-rdk] [-s src-window] [-t dst-window]
              (alias: movew)
        This is similar to link-window, except the window at src-window
        is moved to dst-window.  With -r, all windows in the session are
        renumbered in sequential order, respecting the base-index option.

Wenn Sie movewohne Parameter aufrufen, wird das aktuelle Fenster an die erste freie Position verschoben. movew -rwird alle Fenster auf einmal neu nummerieren.

gelraen
quelle
5
Für diejenigen, die eine ausführlichere Anweisung benötigen: ctrl b :Geben Sie ein move-window -r(wobei ctrl bder Standardpräfixschlüssel ist)
markieren Sie den
92

tmux 1.7 bietet eine Reihe von Funktionen, mit denen lückenlose / gepackte Fensternummern erstellt und verwaltet werden können:

  • Der move-windowBefehl hat eine neue -rOption gelernt , die alle Fenster in einer Sitzung neu nummeriert (entweder die aktuelle Sitzung oder eine mit der -tOption angegebene).

    Wenn Sie eine Reihe von Fenstern wie {1: A, 4: B, 15: C} haben, können Sie move-window -rdiese mit {1: A, 2: B, 3: C} neu nummerieren (sie beginnen mit Ihrem base-index; 1 in diesem Beispiel).

  • Wenn die renumber-windowsSitzungsoption aktiviert ist, nummeriert tmux die Fenster einer Sitzung (wie bei move-window -r) automatisch neu, nachdem ein Fenster geschlossen wurde.

    Wenn Ihnen dieses Verhalten gefällt, können Sie es im globalen Wert aktivieren, sodass es für alle Sitzungen, die es nicht überschreiben, automatisch aktiviert wird:

    set-option -g renumber-windows on
    
Chris Johnsen
quelle
4
Endlich! Ich habe renumber-windowsfür Ewigkeiten nach dieser Option gesucht ! Stört mich immer, dass sich links neue Fenster öffnen, weil ich vorher einige schließe.
Ory Band
15

Ich befinde mich oft in einer Situation, in der zwischen den Fensternummern Lücken bestehen, z. B. bei einer Sitzung mit Windows:

1 3 4 8 9 13

Ich habe ein tmux-Skript geschrieben, um sie neu zu ordnen, ohne ihre jeweilige Reihenfolge zu ändern oder die Option "Fenster neu nummerieren" zu aktivieren. Das Ergebnis:

1 2 3 4 5 6

Fügen Sie Folgendes in Ihre .tmux.conf ein:

bind R                                      \
    set -g renumber-windows on\;            \
    new-window\; kill-window\;              \
    set -g renumber-windows off\;           \
    display-message "Windows reordered..."

Drücken Sie [PREFIX] -R, um die Fenster neu anzuordnen (oder die Bindung zu ändern).

Ich lasse zZ tmux 1.9a laufen.

Das obige kann durch das viel einfachere ersetzt werden:

bind R                                      \
    move-window -r\;                        \
    display-message "Windows reordered..."
Evangelien
quelle
1
Unterscheidet sich dies vom Ausführen von "move-window -r"?
PonyEars
2
Nein ist es nicht. Ich wusste einfach nichts über die Option -r zum Verschieben des Fensters :) Nie zu spät, um es zu lernen, danke!
Evangelien
6

Die vorherigen Antworten sind alle in Ordnung, aber hier ist eine kurze Lösung, wenn Sie nur ab und zu eine kleine Anzahl von Fenstern mischen möchten.

move-window -t <number>

verschiebt das aktuelle Fenster auf eine neue Fensternummer (die noch nicht belegt sein darf). Um zwei Fenster zu tauschen, verschieben Sie zunächst ein Fenster auf eine neue Nummer. zB um Fenster 3 und 5 zu tauschen:

move-window -s 3 -t 99
move-window -s 5 -t 3
move-window -s 99 -t 5
Pistos
quelle
2

Wenn Sie nur Windows benötigen, um immer neu zu nummerieren, wenn eines beendet wird, können Sie dies verwenden in .tmux.conf:

set-option -g renumber-windows on
jojman
quelle