Der Ansatz, den ich benutze, kombiniert ein bisschen Ashishs Antwort mit der von piec; Ich habe einen Alt-Links- und Rechtspfeil, der an einen kurzen kleinen Shell-Callout gebunden ist, der das Fenster um eins nach links oder rechts verschiebt, es sei denn, es ist das erste oder letzte Fenster, respektvoll. Ich habe dies getan, weil, wenn Sie im letzten Fenster einen Swap +1 ausgeben (oder im ersten Fenster einen Swap -1), der Swap immer noch ausgeführt wird, anstatt wie erwartet wieder zurück zu laufen:
0:one 1:two 2:three 3:zero*
Wird
0:zero* 1:two 2:three 3:one
Anstatt von
0:zero* 1:one 2:two 3:three
Die Befehle, die ich verwende, funktionieren also nicht mehr, wenn das Fenster den Rand der Liste erreicht hat:
bind-key -n M-Left run-shell 'tmux list-windows | head -n 1 | grep -q active || tmux swap-window -t -1'
bind-key -n M-Right run-shell 'tmux list-windows | tail -n 1 | grep -q active || tmux swap-window -t +1'
Dies kann leicht mit Basisindex- und Umnummerierungsfenstern kombiniert werden , um eine Liste von Fenstern zu erhalten, die bei einer beliebigen Zahl beginnen und keine Lücken aufweisen.
Wenn Sie wie ich den Basisindex 1 verwenden und nicht glauben, dass Sie jemals über 999 Fenster hinausgehen werden, können Sie einen kleinen Trick anwenden, um ihn richtig rollen zu lassen, obwohl die Befehle ein wenig aufblähen:
set -g base-index 1
set -g renumber-windows on
bind-key -n M-Left run-shell 'if tmux list-windows | head -n 1 | grep -q active ; then tmux move-window -t 999 \; move-window -r \; refresh-client -S ; else tmux swap-window -t -1 ; fi'
bind-key -n M-Right run-shell 'if tmux list-windows | tail -n 1 | grep -q active ; then tmux move-window -t 0 \; move-window -r \; refresh-client -S ; else tmux swap-window -t +1 ; fi'
Dies funktioniert, indem das letzte Fenster vorübergehend auf den nicht verwendeten Index-0 verschoben wird und anschließend move-window -r aufgerufen wird , um sie ab 1 erneut zu nummerieren. Ähnlich funktioniert es, wenn Sie das erste Fenster ans Ende verschieben. Durch die Auswahl einer riesigen Zahl, die Sie niemals verwenden werden, wird sichergestellt, dass beim erneuten Auslösen von move-window -r alles wie erwartet nummeriert wird. Wenn Sie sich über refresh-client -S wundern , ist dies erforderlich, da die Statusleiste manchmal erst aktualisiert wird, wenn weitere Änderungen vorgenommen wurden , während das Umordnen aus dem Verschiebefenster ordnungsgemäß funktioniert. Indem Sie nur die Statusleiste (-S) aktualisieren, vermeiden Sie dies.
Das einzige Problem, das ich bei diesem Ansatz feststellen kann, ist, dass das Swap-Fenster implizit das zuletzt verwendete Fenster in das Fenster ändert, mit dem Sie getauscht haben. Wenn Sie sich also in Fenster Nr. 1 befinden, zu Fenster Nr. 4 wechseln und es um eins zurückschieben, werden Sie feststellen, dass Ihr zuletzt verwendetes Fenster das neue Nr. 4 (früher Nr. 3) anstelle von Nr. 1 ist. Daran scheint es keinen Weg zu geben.
C-b
,.
können Sie ein Fenster neu nummerieren.