tmux es un terminal multiplexer, un programa que permite, con una sola
pantalla; crear, acceder y controlar varias terminales. Está basado en sesiones,
es decir, colecciones de estas pseudo terminales; cada una ocupando su propia
ventana, cuyo comportamiento recuerda un poco a Vim.
Para iniciarlo:
tmux
Y en principio seguimos teniendo una consola, a excepción de la barra verde informativa abajo de todo, que indica la sesión activa y que estamos en tmux.
Para salir:
exit
Vocabulario de tmux
- Sessions o sesiones: contiene una o más ventanas, como si fuese un workspace
- Windows o ventanas: contiene paneles y disposiciones de estos. Cada una se puede dividir en varios paneles
- Panels o paneles: una pseudo terminal o una terminal dentro de otra terminal
Fuente: Arco Linux
Comandos de tmux
Existen varias formas para interactuar con tmux:
- Comandos de teclado: tienen el siguiente aspecto
<prefijo> + <comando>. Por defecto el prefijo esctrl-b - Argumentos de línea de comandos: comandos que se le envían a través de la shell:
tmux <comando> - Configuración del usuario: tmux lee un archivo de configuración cada vez que se inicia, por defecto busca
~/.tmux.config
Por ejemplo, para listar las sesiones activas:
<ctrl-b>s
o desde la línea de comandos
tmux list-sessions
El comando más importante: la ayuda:
<prefijo> ?tmux list-keys:list-keysY a mayores, información sobre todas las sesiones, ventanas, paneles, etc:
tmux info.
Alternativamente, existe la ayuda en manpages:
man tmuxo online
Comandos de teclado
Sesiones:
<prefijo> s: mostrar todas las sesiones (sessions)<prefijo> $: renombrar sesión actual<prefijo> d: separar ¿ventana actual? de la sesión (detach)<prefijo> w: previsualización de la sesión y ventana (preview)<prefijo> (<prefijo> ): moverse a la sesión anterior/siguiente
Ventanas:
<prefijo> c: crear ventana (create)<prefijo> ,: renombrar ventana actual<prefijo> &: cerrar la ventana actual<prefijo> p/n: ir a la ventana anterior/siguiente (previous/next)<prefijo> l: ir a la ventana anterior (last)<prefijo> 0..9: cambiar a la ventana dado el número
Paneles:
<prefijo> %: dividir panel en horizontal<prefijo> ": dividir panel en vertical<prefijo> x: cerrar panel
<prefijo> <flechas>: moverse entre paneles<prefijo> ;: cambiar al último panel activo<prefijo> o: siguiente panel<prefijo> q: mostrar los números de panel<prefijo> q 0..9: ir al panel dado el número
<prefijo>+<flechas><prefijo> <ctrl+flechas>: cambiar tamaño del panel<prefijo> { }: mover el panel a la izquierda/derecha<prefijo> <ctrl-o>: intercambiar panel con el último<prefijo> <espacio>: cambiar entre disposiones de paneles<prefijo> z: activar el zoom (zoom)<prefijo> !: convertir panel en ventana
Fuente: tmux cheat sheet
Argumentos de línea de comandos
tmuxtmux new/new-session: nueva sesióntmux new -s <nombre>: nueva sesión dado el nombretmux new -n <nombre-ventana>: nueva sesión dado el nombre de la ventana
tmux kill-ses/kill-session -t <nombre>: elimina la sesión dado el nombretmux kill-session -a: elimina la sesión actualtmux kill-session -a -t <nombre>: elimina todas las sesiones excepto la dadatmux a/at/attach/attach-session [-t <nombre>]: recarga una sesión antes separada [dado el nombre]
tmux ls/list-sessions: muestra todas las sesiones
Nota: Viendo estos comandos, podemos sacar la conclusión de que al ejecutar
tmuxse crea una nueva sesión, sales con<prefijo>dy posteriormente puedes recuperar la sesión contmux at. Para no recuperar la sesión, usa<prefijo>:kill-session.
Nota: La sesión también guarda la configuración, es decir, si por ejemplo cambias el prefijo, este se mantendrá cuando la recuperes.
Nota: puede que se mantengan las sesiones devido al servidor de tmux corriendo en el fondo. ¿Si reiniciamos el ordenador, se irá todo a tomar por saco?
Comandos
Este modo es muy similar, por no decir igual, al de Vim. Realizan diversas acciones y son muy similares a los argumentos de línea de comandos. También, se usa este “lenguaje” para crear archivos de configuración, cuyas instrucciones se ejecutarán al iniciarse (igual que Vim, vamos).
:new: nueva sesión:new -s <nombre>: nueva sesión dado el nombre:attach -d: separar todas las ventanas de la sesión excepto la actual:swap-window -s 2 -t 1: reordena las ventanas; en este caso: 2 origen (source) y 1 destino (destination):swap-window -t -1: reordena la ventana actual; en este caso: posición anterior:setw synchronize-panes: activa la sincronización de paneles, es decir, envía el mismo comando a todos los paneles
Modos
Por defecto, tmux permite interactuar con la terminal activa, pero también existen varios modos en los que poder operar.
Copy mode o modo copiar: permite seleccionar contenido de la ventana y guardarlo en un buffer, para posteriormente pegarlo.
View mode: similar al anterior, pero se inicia cuando un comando genera output (como por ejemplo
list-keys)Choose mode: permite escoger entre varias opciones, usado en
choose_buffer,choose-clientychoose-tree.
Modo copiar
Los siguientes atajos son los del modo Vim, actívalos con setw -g mode-keys vi.
<prefijo> [: entrar al modo copiar<prefijo> ]: pegar contenido del buffer
Comandos del modo copiar:
<espacio>: comenzar selección<Esc>: limpiar selecciónq: salir o cancelar (quit)v: cambiar a rectánguloV: seleccionar línea
h j k l: mover el cursor0 $: inicio/fin de línea (?)H M L: mover cursor arriba/medio/abajo en la pantalla (high & medium & low)<C-u> <C-d>: desplazar pantalla arriba/abajo (up & down)f F t T: saltar a carácter (find & ’til)
Y demás comandos de movimiento como w W e E b B <C-f> <C-b> / ? n N ... también
funcionan. Lista completa en man tmux sección WINDOWS AND PANES.
tmux, como Vim, mantiene una lista llamada paste buffers, cada uno llamado
automáticamente (buffer0001, buffer0002… hasta buffer-limit) o
manualmente. Estos últimos se crean con :set-buffer o :load-buffer, o
puedes renombrarlos con :set-buffer -n. Para usarlos, usa el comando
paste-buffer. Estos no tienen límite.
Configuración
TODO
Al igual que en Vim, se pueden cambiar los atajos de teclado, asignando una
tecla a cada comando con la sentencia bind[-key]. También hay opciones de
configuración que se pueden editar con set.
set -g prefix C-s: cambiar el prefijoset -g <opción>: establece una opción para todas las sesionessetw -g <opción>: establece una opción para todas las ventanasset mouse on: activa el ratón