Frage Wie ordne ich tmux Windows neu?


Im screenIch kann einfach tippen C-a :number 0 um ein Fenster an den Anfang der Fensterliste zu verschieben und alle anderen Fenster nach unten zu schieben. Was ist die entsprechende Befehlssequenz für? tmux? Ich schaute auf die Manpage, aber ich finde es an dieser Stelle verwirrend.


357
2018-02-02 19:53


Ursprung


C-b, . lässt Sie ein Fenster neu nummerieren. - isomorphismes
Wenn ich all die vielen Antworten lese, sehe ich immer noch keine einfache Lösung für die Frage des OP: Wie verschiebe ich ein bestimmtes Fenster auf Position 0 und verschiebe den Rest nach rechts. Muss ich wirklich jeden manuell verschieben, um dies zu tun? Ich möchte nur einen Zug rückgängig machen, den ich aus Versehen gemacht habe (und ich bin nicht sicher, was genau), was ich glaube, dass Fenster 0 nach Fenster 8 verschoben wurde und alle anderen nach links verschoben wurden. - nealmcb
@nealmcb das einfachste, was ich mir vorstellen konnte, ist, den Basisindex auf 1 zu setzen, neu zu nummerieren und dann das Fenster in den leeren 0-Slot zu verschieben: superuser.com/a/1155999/674549 - eMBee
Für den Unterschied von swap-window -s number und swap-window -t number aktuelles Fenster tauschen, siehe meine Antwort hier. - qeatzy
Sehen diese Antwort für eine Bash-Funktion, um den Bereich von tmux-Fenstern zu verschieben, z. B. [2-5] von [0-6] -Fenstern. - qeatzy


Antworten:


Das swap-window Befehl ist am nächsten zu dem, was Sie wollen.

"Prefix:" (das heißt "Ctrl-B:" als Voreinstellung) bringt Sie zur tmux-Eingabeaufforderung. Dort geben Sie ein:

swap-window -s 3 -t 1

Fenster Nr. 3 und Fenster Nr. 1 vertauschen ihre Positionen.

Um das aktuelle Fenster mit dem oberen Fenster zu tauschen, tun Sie Folgendes:

swap-window -t 0

Im unwahrscheinlichen Fall, dass kein Fenster bei Index 0 ist, tun Sie Folgendes:

move-window -t 0

(wenn der Basisindex 0 ist, wie es standardmäßig ist).

Sie können diesen Befehl an einen Schlüssel (T für "top" zum Beispiel) binden, indem Sie Folgendes zu Ihrem hinzufügen ~/.tmux.conf:

bind-key T swap-window -t 0

397
2018-03-01 09:39



Danke für deine Bearbeitung, aber move-window funktioniert nur, wenn kein anderes Fenster am angegebenen Index vorhanden ist. Also in den meisten Fällen move-window -t 0 wird nicht funktionieren, da normalerweise schon ein anderes Fenster an dieser Position sein wird. - matlehmann
Das ist richtig, ich werde es verbessern. - zakkak
Vielleicht möchten Sie sich das ansehen movew. - Marcello Romani
Ebenfalls, bind-key L swap-window -t -1 um es zum letzten Fenster zu machen. - w17t
Für den Unterschied von swapw -s number und swapw -t number aktuelles Fenster tauschen, siehe meine Antwort hier. - qeatzy


Wenn Sie Gareths Antwort hinzufügen, können Sie die folgenden Tastenbelegungen verwenden

bind-key -n C-S-Left swap-window -t -1
bind-key -n C-S-Right swap-window -t +1

Durch Drücken von Strg + Umschalt + Nach links (wird das aktuelle Fenster nach links verschoben. Ähnlich rechts. Keine Notwendigkeit, den Modifikator (C-b) zu verwenden.


210
2018-02-15 11:18



Dies -1 und +1 Syntax hilft, das Problem der belegten Indizes zu lösen. tmux verschiebt die anderen Fenster für Sie und wird automatisch zum Ende / Anfang umgeleitet. Dies ist die beste Antwort. - brianpeiris
Das ist göttlich! Vielen Dank. - Bruno Buccolo
Meine Unfähigkeit, tmux-Fenster leicht zu bewegen, nervt mich seit ein paar Wochen. Dies macht es so viel einfacher, mit den Fenstern umzugehen! Vielen Dank von diesem aktuellen tmux convert. - calvinf
Toller Tipp, lieber bind-key S-Left swap-window -t -1, also kann ich <prefix> shift + arrow machen, da ich Schlüssel für Programme nicht zusammenzählen mag. - demure
Wenn Sie Buchstaben verwenden, müssen Sie einen Großbuchstaben und nicht C-S verwenden, wie folgt: bind-key -n C-H swap-window -t -1 - Matthew Mitchell


Das tmux äquivalent zu :number 42 ist :move-window -t 42.


60
2018-04-05 22:12



Dies ist an C-b gebunden. - vedang
Vielen Dank! Das ist viel besser als die angenommene Antwort imo. - Ashe
@ArlenCuss Eigentlich sind beide Antworten gut und nützlich. Sie sehen, mit Bildschirm: Nummer können Sie Fenster tauschen, mit tmux: move-window Sie können Fenster nur verschieben, wenn der Zielindex nicht verwendet wird. Also, imo, beide: swap-window und: move-window sind notwendig, um die Kontrolle über die Fensterpositionen zu bekommen :) - Victor Farazdagi
+1 für eine Antwort von einem Programmierguru (auch um korrekt zu sein). Nur so kann ich es in einem aktiven Fenster arbeiten lassen - engineerDave
TMUX :move-window ist nicht entspricht dem Bildschirm :number. :number Tauscht, wenn das Ziel existiert, :move-window scheitert in diesem Fall. Sie müssen wählen zwischen :move-window und :swap-window - piec


Sie können ein Äquivalent zu implementieren screenist es number Befehl mit einem externen Shell-Skript, das zwischen swap-window und move-window. Sie können es so an einen Schlüssel binden:

bind < command-prompt -p index "run-shell '~/.tmux.number.sh %%'"

~/.tmux.number.sh:

#!/bin/bash
if [ $# -ne 1 -o -z "$1" ]; then
    exit 1
fi
if tmux list-windows | grep -q "^$1:"; then
    tmux swap-window -t $1
else
    tmux move-window -t $1
fi

12
2018-04-16 15:42



Sehr schöne Lösung, funktioniert super! Ich habe nur kleinere Änderungen vorgenommen, um das Programm zu bereinigen und zu entfernen -F Option, die von meiner tmux-Version nicht akzeptiert wird. - haridsv


Ich nummeriere Fenster wie folgt:

Strg+b, ., 222

würde die Strömung machen tmux Fenster (alle Scheiben) Nummer 222.


Relatedly: Wenn ich Dinge herumschlurfe, möchte ich tun

Strg+b  :new-session -d -s "reading"

und von dort kann ich auch verwenden Strg+b, ., reading um das aktuelle Fenster (alle Fenster gleichzeitig) zur Lesesitzung zu bewegen. Sie können zwischen den Sitzungen mit suchen Strg+b, s die Art und Weise, wie Sie innerhalb der Sitzung surfen würden Strg+b, w.

HTH


10
2017-07-09 22:16





Mit dem Swap-Fenster zu einer beliebigen ID wechseln: [am nächsten zum Bildschirm: Nummer]

# window movement / renumbering like in screen's :number
bind-key m command-prompt -p "move window to:"  "swap-window -t '%%'"

[m for move -> triff auf Präfix-m und gib say 3 ein. .um Fenster zu 3 neu nummerieren]


8
2017-12-12 03:13



Das ist schon nett, aber noch besser wäre: tue swap-window und wenn es schief geht, geh zurück in move-window - nisc


Da Ashish Arigas Antwort nicht auf Version 1.9a und darunter funktioniert. ich benutze < und > um das Fenster nach links bzw. rechts zu wechseln, indem Sie die Zeile darunter hinzufügen .tmux.conf.

# swap window to left or right
bind-key -r < swap-window -t -1
bind-key -r > swap-window -t +1

5
2018-03-18 17:08





Für diejenigen von Ihnen, die verwenden byobu Als Wrapper für tmux können Sie das aktuelle Fenster mit dem vorherigen oder nächsten Fenster austauschen:

Ctrl-Shift-F3
Ctrl-Shift-F4

Die Tastenbelegung definiert durch byobu Für diese Schlüssel könnte von Interesse sein:

bind-key -n    C-S-F3 swap-window -t :-1
bind-key -n    C-S-F4 swap-window -t :+1

3
2018-01-26 00:48



Wäre toll, eine Abkürzung für Splits zu bewegen im ein bestimmtes Fenster. - Pablo Bianchi