tmux

tmux es un multiplexor de terminales, permite crear una cantidad de terminales, accederles, y controlarlos desde una única pantalla. tmux puede ser desconectado de la pantalla y continuar corriendo en el fondo (background), para luego reconectarse con él.

Referencia rápida de keybindings

Algunos keybindins rápidos que suelo usar:

  • Ctrl-b-" : separado horizontal (pane)
  • Ctrl-b-% : separado vertical (pane)
  • Ctrl-b-{right,left,up,down} : navegación entre paneles.
  • Ctrl-b-c : crea una nueva ventana.
  • Crtl-b-{0..9} : selecciona ventana 0 a 9.
  • Ctrl-b-d : dettach, desconectar el terminal.
  • Ctrl-b-x :kill el panel actual (equivale a cerrar el terminal).

Referencia rápida de comandos

Listado de sesiones

$ tmux list-sessions
0: 1 windows (created Sat Apr 30 09:53:14 2011) [157x39]
1: 1 windows (created Sat Apr 30 09:53:40 2011) [157x39]

Reconexión a sesión

# tmux attach
no sessions
..

# tmux attach-session
...

Si hay más de una sesión, y no se especifica a cual conectar, conecta a la más reciente. Si no ha sido bautizada la sesión con algún nombre, use simplemente el indice que le entrega list-sessions.

# tmux attach-session -t 1
...

Si conecta desde más de un cliente, por omisión, no se desconecta ninguno, todos quedan conectados.

Bash completion

El paquete tmux incorpora un archivo para definir el completado de comandos y opciones en el shell Bash, habilite a nivel general copiando al directorio /etc/bash_completion.d/:

i
$ su -c "cp /usr/share/doc/tmux-1.6/examples/bash_completion_tmux.sh /etc/bash_completion.d/tmux" 

Ejemplo con doble-tab:

$ tmux b
bind-key    break-pane

Configuración

Por omisión tmux carga el archivo de configuración del sistema desde /etc/tmux.conf si existe, luego busca el archivo de configuración del usuario en ~/.tmux.conf.

Dichos archivos de configuración son un conjunto de comandos tmux que son ejecutados en secuencia cuando se inicia el servidor.

Si algún comando falla en alguno de los archivos de configuración, tmux lo reportará como error y terminará sin ejecutar ningún otro comando.

Alternativamente puede usar la opción -f para especificar un archivo de configuración.

En Fedora no hay archivo de configuración del sistema en /etc/tmux.conf provisto por el paquete tmux.

Modo vi o emacs

Las secuencias de teclas disponibles dependen de si ha seleccionado el modo emacs o vi. Para definir el modo al arranque use la opción mode-keys.

mode-keys [vi | emacs]

Use el estilo de key bindings vi o emacs en los modos de copia y escogencia. El valor por omisión es emacs amenos que VISUAL o EDITOR contenga ‘vi’.

En Fedora después de useradd simple, ninguna de las dos variables de entorno contiene nada por lo que el comportamiento por omisión sería emacs.

Navegando entre paneles

Si usted usa múltiples paneles debe usar los siguientes comandos para navegar entre ellos (recuerde prefija por omisión con Ctrl-b):

  • ; , mueve el foco al panel previamente activo.
  • o selecciona el próximo panel en la ventana actual, cambia el foco.
  • Arriba, Abajo, Izquierda, Derecha, cambian el foco al panel de arriba, abajo, izquierda o derecha del panel actual con el foco.
  • Ctrl-o rota los paneles hacia adelante en la ventana actual. El foco se mantiene en el mismo panel, es decir, se "rota el terminal" pero no el foco.
  • Alt-o rota los paneles hacia atrás en la ventana actual, se rota el terminal.

Mis keybindings

Moviéndome entre paneles

El mayor problema de uso que he encontrando es usar Ctrl-b-Arriba/Ctrl-b-Abajo/Ctrl-b-Izquierda/Ctrl-b-Derecha ya que es muy común para mi usar inmediatamente después Arriba, Abajo para acceder a los más recientes comandos en el shell. Constantemente lo hago demasiado rápido y termino moviéndome otra vez al otro panel sin querer, es realmente molesto para mi. Viendo el mapeo de teclas por omisión mi propuesta es usar las mismas teclas de desplazamiento estilo vi/vim.

  • Ctrl-b-k , ir arriba.
  • Ctrl-b-j, ir abajo.
  • Ctrl-b-h, ir a la izquierda.
  • Ctrl-b-l, ir a la derecha , esta es la única que se solapa con el keybinding estandar.

Por supuesto este mapa tiene la ventaja de evitar mover las manos lejos del teclado, al menos la mano derecha ya no debe moverse para navegar por los paneles, es una ganancia para mi.

~/.tmux.conf, líneas relevantes.

bind-key k select-pane -U
bind-key j select-pane -D
bind-key h select-pane -L
bind-key l select-pane -R

# Usualmente, Alt-h ...
bind -n M-h select-pane -L
bind -n M-j select-pane -D
bind -n M-k select-pane -U
bind -n M-l select-pane -R

Doc/notas por incorporar

tmux-three-panes.png (43.6 kB) Guillermo Gómez, 04/26/2011 06:25 pm