Renumerar ventanas en tmux

128

Con frecuencia termino con más de diez ventanas en tmux. Más tarde, cierro algunos de mis mayores. ¿Hay alguna forma de renumerar, digamos la ventana 15, a la ventana 3 (que ya no existe)? ¿O a packtodos de nuevo, para que no haya espacios vacíos? Me gustaría hacer esto porque es difícil saltar a ventanas con números más altos, porque no puedes hacerlo Ctrl+B, 15. Tengo que usar Ctrl+B, wpara enumerar las ventanas y luego escribir la letra correspondiente a la ventana que quiero abrir.

Sé que puedo intercambiar ventanas. Por ejemplo, podría crear una nueva ventana ( Ctrl+B, c) que se abriría en la ranura vacía 3. Luego puedo abrir la swapwventana 15 y la ventana 3 y luego cerrar la ventana 15. Obviamente, este es un enfoque tedioso.

¿Cómo gestionas muchas ventanas en tmux?

dogbane
fuente

Respuestas:

123

Parece que necesitas esto:

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.

Llamar movewsin parámetros mueve la ventana actual a la primera posición libre. movew -rvolverá a numerar todas las ventanas a la vez.

gelraen
fuente
55
Para aquellos que necesitan una instrucción más explícita: ctrl b :luego ingrese move-window -r(donde ctrl bestá la clave de prefijo predeterminada)
marque el
92

tmux 1.7 tiene un par de características que pueden ayudar a establecer y mantener números de ventana sin espacio / empaquetados:

  • El move-windowcomando aprendió una nueva -ropción que renumerará todas las ventanas de una sesión (ya sea la sesión actual o una especificada con la -topción).

    Si tiene un conjunto de ventanas como {1: A, 4: B, 15: C}, puede ejecutar move-window -rpara renumerarlas a {1: A, 2: B, 3: C} (comenzarán con su base-index; 1 en este ejemplo).

  • Cuando la renumber-windowsopción de sesión está habilitada, tmux renumerará automáticamente las ventanas de una sesión (como con move-window -r) después de cerrar cualquier ventana.

    Si le gusta este comportamiento, puede activarlo en el valor global para que todas las sesiones que no lo anulen lo habiliten automáticamente:

    set-option -g renumber-windows on
    
Chris Johnsen
fuente
44
¡Finalmente! ¡He estado buscando esta renumber-windowsopción por años! Siempre me molestaba que se abrieran nuevas ventanas a la "izquierda" porque cierro algunas antes.
Ory Band
15

A menudo me encuentro en una situación en la que tengo espacios entre los números de las ventanas, por ejemplo, una sesión con ventanas:

1 3 4 8 9 13

Escribí un script tmux para reordenarlos sin cambiar su orden respectivo ni activar la opción 'renumbering-windows'. El resultado:

1 2 3 4 5 6

Ponga lo siguiente en su .tmux.conf:

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

Presione [PREFIX] -R para reordenar las ventanas (o cambiar el enlace).

Actualmente estoy ejecutando tmux 1.9a.

Lo anterior se puede reemplazar con el mucho más simple:

bind R                                      \
    move-window -r\;                        \
    display-message "Windows reordered..."
gospes
fuente
1
¿Es esto diferente de ejecutar "move-window -r"?
PonyEars
2
No, no es. Simplemente no sabía acerca de la opción -r para mover la ventana :) nunca es tarde para aprender, ¡gracias!
gospes
6

Las respuestas anteriores están bien, pero aquí hay una solución concisa si todo lo que quiere es barajar una pequeña cantidad de ventanas de vez en cuando.

move-window -t <number>

moverá la ventana actual a un nuevo número de ventana (que aún no debe estar ocupado). Para intercambiar dos ventanas, primero mueve temporalmente una ventana a un nuevo número. Por ejemplo, para intercambiar las ventanas 3 y 5:

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

Si solo necesita que Windows se renumere siempre cuando se mata uno, puede usar esto en .tmux.conf:

set-option -g renumber-windows on
jojman
fuente