Herramientas de usuario

Herramientas del sitio


informatica:software:cli:tmux

¡Esta es una revisión vieja del documento!


tmux

Multiplexor de terminales, permite ejecutar diferentes programas en un único terminal.

Vocabulario

  • Window (ventana): como los escritorios virtuales, pero en el terminal, es decir, espacios de trabajo diferentes.
  • Pane (panel): cada división del terminal
  • Prefix (prefijo): combinación de teclas base para realizar acciones en tmux

Básicamente, tmux es un servidor que contiene un sesión que a su vez contiene ventanas que a su vez contiene paneles:

####################################
#             Servidor             #
#                                  #
#   ############################   #
#   #         Sesión           #   #
#   #                          #   #
#   #   ####################   #   #
#   #   #     Ventana      #   #   #
#   #   #                  #   #   #
#   #   #  ##############  #   #   #
#   #   #  #    Panel   #  #   #   #
#   #   #  #            #  #   #   #
#   #   #  #            #  #   #   #
#   #   #  ##############  #   #   #
#   #   #                  #   #   #
#   #   ####################   #   #
#   #                          #   #
#   ############################   #
#                                  #
####################################

Configuración

La configuración se establece en un fichero .tmux.conf que se guarda en el directorio personal del usuario.

Ejemplo:

# Cambiamos la combinación por defecto
unbind C-b
set -g prefix C-a

# Cambiar de panel con Alt + flecha
bind -n M-Left select-pane -L
bind -n M-Right select-pane -R
bind -n M-Up select-pane -U
bind -n M-Down select-pane -D

# Habilitar el ratón (a partir de la versión 2.1)
set -g mouse on

# Habilitar el ratón (versión 1.8)
#setw -g mode-mouse on
#set -g mouse-select-window on
#set -g mouse-select-pane on
#set -g mouse-resize-pane on
#set -g mouse-utf on

En el ejemplo anterior quitamos la combinación por defecto Ctrl+B para establecer una más cómoda

Atajos de teclado

prefix es la combinación que se tenga definida por defecto (en esta wiki la definimos como Ctrl+A).

  • prefix + %: divide la pantalla verticalmente
  • prefix + ": divide la pantalla horizontalmente
  • prefix + z: zoom en el panel activo (o recupera su tamaño original).
  • prefix + x: cerrar panel activo.
  • prefix A-1: cambia a la disposición horizontal
  • prefix A-2: cambia a la disposición vertical
  • prefix A-3: cambia a la disposición horizontal (incrementa el panel con foco)
  • prefix A-4: cambia a la disposición vertical (incrementa el panel con foco)
  • prefix A-5: cambia a la disposición en mosaico
  • prefix space: cambia a la siguiente disposición
  • prefix A-↑ [ | | ]: redimensiona un panel
  • prefix Control + [ | | ]: redimensiona un panel con más sensibilidad.
  • prefix (: conectarse a la siguiente sesión
  • prefix {: mover el panel a la anterior posición
  • prefix }: mover el panel a la siguiente posición
  • prefix $: renombrar la sesión actual
  • prefix c: Crear una nueva ventana
  • prefix p: Ir a la ventana anterior.
  • prefix n: Ir a la ventana siguiente.
  • prefix 1 [2 | 2 … ]: moverse a la ventana 1, 2…
  • prefix ,: renombrar la ventana actual.
  • prefix s: mostrar sesiones abiertas de Tmux.
  • prefix ?: muestra la lista de comandos de tmux
  • prefix [: habilita el scroll para poder moverse con los cursores Av Pág… (q para salir de ese modo)

Uso

Crear sesión

tmux

El modo largo de crear una nueva sesión de tmux es tmux new-session

Crearla sesión con un nombre:

tmux new -s <nombre_sesion>

Salir sesión

Para salir de la sesión, pero que siga funcionando de fondo:

prefix + d

Recuperar sesión

Si hemos perdido la conexión con el servidor (SSH). Tan pronto nos reconectemos, miramos las sesiones de tmux:

tmux ls
0: 2 windows (created Tue Aug 23 12:39:52 2011) [103x30]

En el caso anterior nos dice que existe una sesión llamada 0 (no tiene nombre) que tiene dos ventanas.

Y nos conectamos a ella:

tmux attach -t 0

La forma larga de conectarnos a cierta sesión sería tmux switch-client -t "0"

Si solo tuviésemos una sesión de Tmux, podríamos usar la forma abreviada:

tmux a

Renombrar sesión

Por defecto, al lanzar tmux, le asigna un identificador numérico a la sesión. Si queremos cambiarle el nombre:

tmux rename-session -t 0 <nuevo_nombre_sesion>

En el ejemplo anterior, cambiaríamos el nombre de la sesión 0 por nuevo_nombre_sesion

Ver sesiones abiertas

tmux list-sessions

Matar sesión

Si queremos finalizar alguna sesión de tmux, no tenemos que entrar en ella, podemos hacerlo de la siguiente manera:

tmux kill-session -t <nombre_sesion>

Para finalizar todo:

tmux kill-server

Modo comando

Para entrar en el modo comando:

prefix + :

En ese modo, podemos sincronizar todos los paneles abiertos con:

setw synchronize-panes

Entonces lo que escribamos, se enviará a todos los paneles, permitiéndonos realizar las mismas operaciones en todos a la vez.

Compartir sesión

Utilizando la misma cuenta de usuario, es sencillo compartir la sesión de tmux para que varias conexiones vean lo mismo y lo que se teclee en una se vea en directo en la otra:

tmux new -s compartida

Si abrimos otro terminal y entramos:

tmux attach -t compartida

Habremos entrado en la misma sesión.

Si queremos lograr lo mismo, pero con usuarios diferentes la sesión compartida tendría que crearse mediante un socket al que tengan acceso ambos usuarios, es decir, que estén en el mismo grupo. Por ejemplo:

tmux -S /tmp/sesion-compartida new -s compartida

Cambiamos el grupo del socket:

chgrp grupo-compartido /tmp/sesion-compartida

Donde grupo-compartido sería un grupo donde están los usuarios que quieren acceder a la sesión de tmux.

En otro terminal, otro usuario, se conectaría a la sesión:

tmux -S /tmp/sesion-compartida attach -t compartida

Iniciar con una disposición predeterminada

Para lograr esta disposición de paneles:

------------
|          |
|----------|
|    |     |
------------

Iniciamos una sesión de la siguiente manera:

tmux new-session \; split-window -v \; split-window -h \;

Para esta disposición:

------------
|    |     |
|----------|
|    |     |
------------

Iniciamos tmux así:

tmux new-session \; split-window -v -p 50 \; split-window -h -p 50 \; select-pane -t 0 \; split-window -h -p 50 \;

Para esta disposición:

------------------
|                |
|----------------|
|          |     |
|----------|     |
|          |     |
------------------

Ejecutamos tmux así:

tmux new-session \; \
  split-window -v -p 75 \; \
  split-window -h -p 30 \; \
  select-pane -t 1 \; \
  split-window -v \;

Recursos

informatica/software/cli/tmux.1636145013.txt.gz · Última modificación: por tempwin