2011-12-12 4 views
13

tengo tres ventanas:¿Cómo hago que tmux reordene las ventanas cuando se elimina una?

1:zsh 2:vim* 3:htop 

Al eliminar la ventana actual (# 2), he estas ventanas izquierda:

1:zsh 3:htop 

¿Cómo puedo hacer para que se las vuelve a numerar automáticamente como

1:zsh 2:htop 

Si no recuerdo mal, este es el comportamiento predeterminado de la pantalla GNU. Sé que siempre podría :swap-window, pero me gustaría saber si esto es posible automáticamente.

+0

Esta sería una mejor pregunta para http://superuser.com o http://unix.stackexchange.com. – ziesemer

+2

Los parches para una característica como esta han sido [incluidos en la lista de correo de * tmux-users *] (http://search.gmane.org/?query=renumber&group=gmane.comp.terminal-emulators.tmux.user), pero no han sido incorporados en el código principal. Una búsqueda rápida de "tmux renumerar ventanas" apareció un [script que hace dicha renumeración] (http://brainscraps.wikidot.com/tmux-renum), aunque tendría que invocarlo manualmente (desde un shell o mediante un vinculante mediante 'run-shell'). –

+4

El * tmux * 1.7 recientemente lanzado incluye la opción de sesión 'renumerar-ventanas' (mantiene los números de ventana gapless), y el comando' move-window -r' (hace una renumeración de ventanas por única vez). Si desea números "gapless" para todas las sesiones, puede poner 'set -g renumber-windows on' en su archivo de configuración (una vez que tenga * tmux * 1.7). –

Respuesta

15

Vamos a hacerlo más simple.

Si está utilizando la versión 1.7 tmux a continuación, agregue la siguiente línea a ~/.tmux.conf:

bind-key C-s run "for i in $(tmux lsw|awk -F: '{print $1}'); do tmux movew -s \$i; done" 

Usted puede ordenar todas las ventanas, escribiendo PREFIX-KEY, entonces Ctrl +s.

Si no, si está utilizando tmux versión 1.7 o superior, como ya todo el mundo dice, añada la siguiente línea a ~/.tmux.conf:

set-option -g renumber-windows on 
+0

La opción de vincular la clave aquí no funciona correctamente con tmux 1.6.La primera ventana siempre se vuelve a numerar hasta el final y el resto se mueve hacia abajo, por lo que las ventanas se comportan como una lista circular, rotando cada vez que se ejecuta y potencialmente reordenándolas por completo. La respuesta de Chris a continuación es mucho más confiable. – papercrane

1

La secuencia de comandos bash a continuación (versión actualizada de [1] para reflejar los cambios en la API de tmux) reordena las sesiones de tmux. Sugiero agregar esto como una función bash a la que puedes llamar desde cualquier shell.

# re-number tmux sessions                                                     
for session in $(tmux ls | awk -F: '{print $1}') ;do                                              
    inum=0                                                         
    for window in $(tmux lsw -t 0 | awk -F: '/^[0-9*]/ {print $1}') ;do                                         
     if [ ${window} -gt ${inum} ] ;then                                                 
      echo "${session}:${window} -> ${session}:${inum}"                                            
      tmux movew -d -s ${session}:${window} -t ${session}:${inum}                                         
     fi                                                         
     inum=$((${inum}+1))                                                    
    done                                                         
done 

[1] http://brainscraps.wikidot.com/tmux-renum

10

Desde tmux 1.7, puede escribir un solo comando para hacerlo:

tmux movew -r 
Cuestiones relacionadas