tmux es un multiplexor de terminal que te permite ejecutar múltiples sesiones de shell en una sola ventana, dividir paneles lado a lado, y mantener todo vivo incluso cuando tu conexión SSH se cae. Instálalo con apt install tmux o brew install tmux, e inicia una sesión con tmux new -s myproject.
"Mi conexión SSH se cayó y mató la compilación." "Tengo veinte pestañas de terminal abiertas y no las distingo." "Cambiar entre mi editor, servidor de desarrollo y ejecutor de tests se está haciendo viejo."
Si algo de esto te suena, tmux es la respuesta. Te permite gestionar múltiples terminales virtuales dentro de una sola ventana, y tus sesiones sobreviven a las desconexiones SSH. Una vez que empiezas a usarlo, no hay vuelta atrás.
¿Qué es tmux?
tmux (terminal multiplexer) es una herramienta que te permite ejecutar y gestionar múltiples sesiones de terminal dentro de una ventana. Es código abierto bajo la licencia ISC y ampliamente utilizado en Linux y macOS. La wiki de tmux es el recurso de referencia para documentación detallada.
Puede que hayas oído hablar de GNU Screen — tmux es su sucesor moderno con más funcionalidades y una configuración mucho más flexible. En la comunidad de desarrolladores actual, tmux es la opción estándar.
El mayor beneficio de tmux es la persistencia de sesiones. Cuando tu conexión SSH se cae, los procesos siguen ejecutándose en el servidor tmux. Reconéctate, vuelve a adjuntar tu sesión y todo está exactamente donde lo dejaste. Las compilaciones largas y los despliegues están seguros incluso con conexiones inestables.
tmux organiza tu espacio de trabajo en tres capas:
- Sesión: un grupo de trabajo con nombre. Típicamente una sesión por proyecto
- Ventana: como una pestaña dentro de una sesión. Una sesión puede tener muchas ventanas
- Panel: una subdivisión de una ventana. Múltiples shells uno al lado del otro en una vista
Sesión: "dev"
├── Ventana 0: "editor"
│ ├── Panel 0: vim
│ └── Panel 1: explorador de archivos
├── Ventana 1: "servidor"
│ └── Panel 0: npm run dev
└── Ventana 2: "test"
├── Panel 0: ejecutor de tests
└── Panel 1: tail de logs
Instalación
tmux no se ejecuta nativamente en Windows. Instálalo dentro de WSL usando las instrucciones de Linux.
# WSL (Ubuntu)
sudo apt install tmux
Verifica la instalación:
tmux -V
# tmux 3.6a
Conceptos fundamentales: sesiones, ventanas y paneles
Toda operación de tmux comienza con la tecla prefijo. El prefijo por defecto es Ctrl+b. Cuando veas prefijo a continuación, significa presiona Ctrl+b primero y luego la siguiente tecla.
Operaciones con sesiones
Las sesiones son la unidad de nivel superior. Crea una por proyecto o tarea.
# Crear una sesión con nombre
tmux new -s work
# Listar sesiones
tmux ls
# Adjuntarse a una sesión (reconectar)
tmux attach -t work
# Forma corta
tmux a -t work
# Eliminar una sesión
tmux kill-session -t work
Dentro de una sesión:
prefijo d— Desconectar (abandonar la sesión; los procesos siguen ejecutándose en segundo plano)prefijo s— Listar y cambiar de sesiónprefijo $— Renombrar la sesión actual
Operaciones con ventanas
Las ventanas son como pestañas del navegador. Aparecen en la barra de estado en la parte inferior.
prefijo c— Crear una nueva ventanaprefijo n— Siguiente ventanaprefijo p— Ventana anteriorprefijo 0-9— Saltar a ventana por númeroprefijo w— Vista de árbol de todas las ventanas para selecciónprefijo ,— Renombrar la ventana actualprefijo &— Cerrar la ventana actual (con confirmación)
Operaciones con paneles
Los paneles dividen una ventana para que puedas ver múltiples shells a la vez — perfecto para ejecutar un editor junto a una terminal.
prefijo %— Dividir izquierda/derechaprefijo "— Dividir arriba/abajoprefijo Flecha— Moverse entre panelesprefijo Ctrl+Flecha— Redimensionar paneles (presionar repetidamente)prefijo z— Alternar zoom (pantalla completa del panel actual)prefijo x— Cerrar el panel actual (con confirmación)prefijo Espacio— Ciclar entre diseños
Modo de copia
Para desplazarte hacia atrás en la salida o seleccionar texto dentro de tmux, entra al modo de copia.
prefijo [— Entrar al modo de copiaq— Salir del modo de copiaprefijo ]— Pegar el contenido del buffer
Con el modo vi habilitado (ver .tmux.conf abajo):
prefijo [para entrar al modo de copiaEspaciopara iniciar la selección- Teclas de flecha o
hjklpara extender la selección Enterpara copiar (yanks al buffer)prefijo ]para pegar
Hoja de referencia de atajos
Una referencia rápida para operaciones comunes. Todas las teclas se presionan después de prefijo.
Sesiones:
| Tecla | Acción |
|---|---|
d | Desconectar |
s | Listar / cambiar sesiones |
$ | Renombrar sesión |
( | Sesión anterior |
) | Sesión siguiente |
Ventanas:
| Tecla | Acción |
|---|---|
c | Crear |
n / p | Siguiente / anterior ventana |
0-9 | Saltar por número |
w | Vista de árbol / seleccionar |
, | Renombrar |
& | Cerrar |
l | Última ventana usada |
Paneles:
| Tecla | Acción |
|---|---|
% | Dividir izquierda/derecha |
" | Dividir arriba/abajo |
Flecha | Mover |
Ctrl+Flecha | Redimensionar |
z | Zoom (alternar) |
x | Cerrar |
Espacio | Ciclar diseños |
{ / } | Intercambiar posición |
! | Separar panel en nueva ventana |
Otros:
| Tecla | Acción |
|---|---|
[ | Modo de copia |
] | Pegar |
: | Prompt de comando |
? | Listar todos los atajos |
t | Reloj |
Personalización con .tmux.conf
El archivo de configuración de tmux se encuentra en ~/.tmux.conf. Los atajos de teclado por defecto son francamente difíciles de recordar, así que personalizar tmux para que coincida con tu memoria muscular es la clave para usarlo a largo plazo.
Aquí tienes una configuración práctica. Elige las partes que tengan sentido para tu flujo de trabajo.
# -------------------------------------------
# Cambiar prefijo a Ctrl+a
# -------------------------------------------
# Igual que GNU Screen y más fácil de alcanzar que Ctrl+b
unbind C-b
set -g prefix C-a
bind C-a send-prefix
# -------------------------------------------
# División de paneles intuitiva
# -------------------------------------------
# | para horizontal, - para vertical. Los nuevos paneles heredan el directorio actual
bind | split-window -h -c "#{pane_current_path}"
bind - split-window -v -c "#{pane_current_path}"
unbind '"'
unbind %
# -------------------------------------------
# Navegación de paneles estilo Vim
# -------------------------------------------
bind h select-pane -L
bind j select-pane -D
bind k select-pane -U
bind l select-pane -R
# -------------------------------------------
# Habilitar soporte de ratón
# -------------------------------------------
set -g mouse on
# -------------------------------------------
# Iniciar números de ventana y panel en 1
# -------------------------------------------
set -g base-index 1
setw -g pane-base-index 1
# -------------------------------------------
# Renumerar ventanas cuando se cierra una
# -------------------------------------------
set -g renumber-windows on
# -------------------------------------------
# Soporte de 256 colores
# -------------------------------------------
set -g default-terminal "screen-256color"
set -sa terminal-overrides ",xterm-256color:RGB"
# -------------------------------------------
# Atajos Vi en modo de copia
# -------------------------------------------
setw -g mode-keys vi
# -------------------------------------------
# Aumentar historial de scroll
# -------------------------------------------
set -g history-limit 10000
# -------------------------------------------
# Personalización de la barra de estado
# -------------------------------------------
set -g status-style 'bg=colour235 fg=colour136'
set -g status-left '#[fg=green]#S '
set -g status-right '%Y-%m-%d %H:%M'
set -g status-left-length 20
Después de editar el archivo, recárgalo desde dentro de tmux:
# Desde el shell
tmux source-file ~/.tmux.conf
# Desde el prompt de comandos de tmux
# Presiona prefijo : y escribe
source-file ~/.tmux.conf
Flujos de trabajo del mundo real
Conocer lo básico es una cosa — ponerlo en práctica es otra. Aquí tienes cuatro patrones que hacen de tmux algo indispensable en la práctica.
Red de seguridad SSH
Aquí es donde tmux brilla más. Tus procesos sobreviven a las desconexiones SSH, así que las compilaciones largas y los despliegues se ejecutan de forma segura incluso con conexiones poco fiables. Si gestionas servidores remotos habitualmente, combina tmux con ssh y rsync para un flujo de trabajo sólido.
# Conectar por SSH al servidor
ssh user@server.example.com
# Iniciar una sesión tmux
tmux new -s deploy
# Ejecutar un despliegue largo
./deploy.sh
# Opcionalmente desconectar si la conexión es inestable
# prefijo d
# --- la conexión se cae / vuelves más tarde ---
# Reconectar
ssh user@server.example.com
# Readjuntar — todo sigue ahí
tmux a -t deploy
Entorno de desarrollo con un comando
Configurar el mismo diseño de ventanas a mano cada día es una pérdida de tiempo. Automatízalo con un script. Si aún no dominas los scripts de shell, este es un buen primer proyecto.
#!/bin/bash
# dev-tmux.sh — levantar una sesión tmux de desarrollo con un comando
SESSION="dev"
PROJECT_DIR="$HOME/projects/myapp"
# Si la sesión ya existe, simplemente adjuntarse
tmux has-session -t $SESSION 2>/dev/null && {
tmux attach -t $SESSION
exit 0
}
# Crear sesión en modo desconectado
tmux new-session -d -s $SESSION -c $PROJECT_DIR
# Panel 0: editor
tmux send-keys 'vim .' C-m
# Dividir a la derecha: servidor de desarrollo
tmux split-window -h -c $PROJECT_DIR
tmux send-keys 'npm run dev' C-m
# Dividir abajo-derecha: observador de tests
tmux split-window -v -c $PROJECT_DIR
tmux send-keys 'npm run test -- --watch' C-m
# Enfocar de vuelta en el panel del editor
tmux select-pane -t 0
# Adjuntarse
tmux attach -t $SESSION
# Hacerlo ejecutable y correr
chmod +x dev-tmux.sh
./dev-tmux.sh
Operaciones simultáneas en múltiples servidores
Con synchronize-panes, cada pulsación de tecla se envía a todos los paneles a la vez. Ejecuta el mismo comando en múltiples servidores en paralelo.
# Crear paneles para cada servidor
tmux new -s servers
tmux split-window -h
tmux split-window -v
tmux select-pane -t 0
# Conectar por SSH a cada servidor desde su panel
# Panel 0: ssh web1.example.com
# Panel 1: ssh web2.example.com
# Panel 2: ssh web3.example.com
# Habilitar entrada sincronizada
# Presiona prefijo : y escribe
setw synchronize-panes on
# Ahora cada pulsación va a todos los paneles simultáneamente
# ej. sudo apt update && sudo apt upgrade -y
# Desactivar cuando termines
setw synchronize-panes off
Programación en pareja
Múltiples terminales pueden adjuntarse a la misma sesión tmux simultáneamente. Esto permite que los compañeros de equipo compartan pantalla y colaboren en tiempo real en el mismo servidor.
# Desarrollador A crea la sesión
tmux new -s pair
# Desarrollador B se adjunta a la misma sesión
tmux attach -t pair
# Ambos ven y pueden escribir en tiempo real
Cuando terminales con diferentes tamaños se adjuntan a la misma sesión, tmux se encoge al más pequeño. Usa el mismo tamaño de terminal, o ejecuta tmux attach -d -t pair para desconectar cualquier conexión existente primero.
Técnicas avanzadas
Automatización con hooks de tmux
Los hooks de tmux permiten ejecutar comandos automáticamente cuando ocurren eventos específicos.
# Sincronizar la ruta del panel al crear una nueva ventana
tmux set-hook -g after-new-window 'send-keys "cd #{pane_current_path}" C-m'
# Establecer el color de la barra de estado al crear una sesión
tmux set-hook -g session-created 'set status-style bg=colour235'
set-hook -g establece hooks globales, mientras que set-hook es por sesión. Los eventos incluyen after-split-window, pane-focus-in, client-attached y muchos más.
Ventanas flotantes con display-popup (tmux 3.2+)
tmux 3.2+ introdujo display-popup para ventanas flotantes. Ideal para comandos rápidos puntuales.
# Abrir una ventana flotante para tomar notas
tmux display-popup -E 'vim ~/notes.md'
# Cambiar de sesión vía fzf en un popup
tmux display-popup -E 'tmux list-sessions -F "#{session_name}" | fzf | xargs tmux switch-client -t'
Vincúlalo en .tmux.conf para acceso con una sola tecla:
# prefijo + g lanza el selector de sesiones
bind g display-popup -E 'tmux list-sessions -F "#{session_name}" | fzf | xargs tmux switch-client -t'
Guardar contenido del panel con capture-pane
capture-pane captura el contenido visible de un panel en un búfer. Útil para logging y depuración.
# Guardar el contenido del panel actual en un archivo
tmux capture-pane -pS - > ~/tmux-output.log
# Capturar todo el búfer de desplazamiento (últimas 5000 líneas)
tmux capture-pane -pS -5000 > ~/full-log.txt
-p imprime el búfer en stdout, -S - captura desde el inicio del desplazamiento.
Operaciones por lotes con send-keys
send-keys permite inyectar pulsaciones de teclas en paneles desde scripts externos. Útil para CI/CD y automatización de pruebas.
# Enviar un comando a un panel específico
tmux send-keys -t dev:0.1 'npm run build' C-m
# Enviar el mismo comando a todos los paneles (sin synchronize-panes)
for pane in $(tmux list-panes -F '#{pane_id}'); do
tmux send-keys -t "$pane" 'echo "pane: $TMUX_PANE"' C-m
done
Extender tmux con plugins (TPM)
TPM (Tmux Plugin Manager) es la forma estándar de gestionar plugins de tmux. Se encarga de la instalación, actualización y limpieza automáticamente.
Instalar TPM
git clone https://github.com/tmux-plugins/tpm ~/.tmux/plugins/tpm
Añade lo siguiente al final de tu .tmux.conf:
# Lista de plugins
set -g @plugin 'tmux-plugins/tpm'
set -g @plugin 'tmux-plugins/tmux-sensible'
set -g @plugin 'tmux-plugins/tmux-resurrect'
# Inicializar TPM (mantener esta línea al final del archivo)
run '~/.tmux/plugins/tpm/tpm'
Luego presiona prefijo + I (I mayúscula) dentro de tmux para instalar los plugins.
Plugins recomendados
- tmux-resurrect — guarda y restaura sesiones tmux tras reinicios.
prefijo + Ctrl-spara guardar,prefijo + Ctrl-rpara restaurar - tmux-continuum — guardado automático cada 15 minutos, con restauración automática opcional al iniciar tmux
- tmux-yank — copia al portapapeles del sistema desde el modo de copia de tmux
FAQ
¿Cómo hago scroll hacia arriba en tmux?
Presiona prefijo [ para entrar al modo de copia, luego usa las teclas de flecha o Page Up/Down para desplazarte. Si tienes set -g mouse on en tu config, también puedes usar la rueda del ratón. Presiona q para salir del modo de copia.
¿Cuál es la diferencia entre tmux y GNU Screen?
tmux ofrece un código base más moderno, mejor soporte para scripting, arquitectura cliente-servidor y diseños más flexibles. Screen existe desde 1987, pero su desarrollo se ha ralentizado significativamente. La mayoría de desarrolladores que empiezan hoy eligen tmux.
¿Puedo usar tmux dentro de tmux (sesiones anidadas)?
Sí. Cuando te conectas por SSH a un servidor remoto que también ejecuta tmux, terminas con sesiones anidadas. Usa prefijo prefijo <tecla> (presiona prefijo dos veces) para enviar comandos a la sesión interior, o rebindea el prefijo del tmux interior a una tecla diferente para evitar confusiones.
¿Cómo redimensiono paneles en tmux?
Presiona prefijo Ctrl+Flecha para redimensionar en la dirección de la flecha. Con el modo ratón activado (set -g mouse on), arrastra el borde del panel. También puedes usar el comando tmux resize-pane -D 5 para redimensionar un número específico de líneas.
¿tmux funciona en macOS?
Sí. Instálalo con brew install tmux. macOS no incluye tmux por defecto, pero Homebrew hace la instalación trivial. Para la integración con el portapapeles, instala tmux-yank o configura reattach-to-user-namespace.
¿Cómo guardo y restauro sesiones de tmux?
Las sesiones de tmux sobreviven a las desconexiones pero no a los reinicios. Instala tmux-resurrect vía TPM para guardar (prefijo + Ctrl-s) y restaurar (prefijo + Ctrl-r) todo tu diseño de sesión incluyendo contenidos de paneles y programas en ejecución.
¿Qué es la tecla prefijo y cómo la cambio?
La tecla prefijo (por defecto Ctrl+b) es la tecla líder que precede a todos los comandos de tmux. Muchos usuarios la cambian a Ctrl+a (igual que GNU Screen) añadiendo unbind C-b; set -g prefix C-a; bind C-a send-prefix a .tmux.conf. Consulta la página man de tmux para todas las opciones disponibles.
Artículos relacionados
- Guía completa de fzf — potencia la búsqueda con tmux + fzf
- Guía completa de alias de shell — acorta comandos tmux con alias
- Herramientas CLI modernas en Rust — haz tu terminal aún más moderna
- Kit de herramientas CLI — mapa de referencia rápida de todos los comandos
Conclusión
tmux responde a una necesidad directa: usar tu terminal más eficientemente.
Puntos clave:
- Tres capas (Sesión → Ventana → Panel) te dan un modelo mental que hace cada comando intuitivo
- Persistencia de sesiones es tu red de seguridad para el trabajo remoto
.tmux.confte permite remapear teclas de prefijo, navegación de paneles y apariencia según tus hábitos- Sesiones con script automatizan la configuración del entorno de desarrollo para que nunca pierdas tiempo en ello
Empieza con la tecla prefijo y la división básica de paneles. A medida que te sientas cómodo, haz crecer tu .tmux.conf una configuración a la vez.