---
title: "Instalar tmux en macOS y Comandos Básicos para Principiantes"
description: "Aprende a instalar tmux en macOS con Homebrew y domina los comandos básicos: sesiones, paneles, plugins y SSH. Amigable para principiantes, actualizado para tmux 3.8."
date: 2026-10-12
categories: ["linux"]
tags: ["tmux","macos","terminal"]
---

import { Picture } from "astro:assets";
import Button from "@components/widgets/Button.astro";
import Notice from "@components/widgets/Notice.astro";
import ListCheck from "@components/widgets/ListCheck.astro";
import Accordion from "@components/widgets/Accordion.astro";
import Tabs from "@components/widgets/Tabs.astro";
import Tab from "@components/widgets/Tab.astro";
import YouTubeEmbed from "@components/widgets/YouTubeEmbed.astro";
import imag1 from "@assets/images/24/09/tmux_split_view.png";

¿Quieres instalar tmux en macOS y aprender los comandos básicos? tmux (terminal multiplexer) mantiene vivas múltiples sesiones de terminal dentro de una única ventana. Puedes desconectarte, irte, y reconectarte después, incluso desde otra conexión SSH, sin perder lo que estaba corriendo. tmux 3.8 salió en septiembre de 2026 con paneles flotantes y temas claros/oscuros integrados. El flujo de trabajo central no ha cambiado, y cada comando de esta guía funciona igual en 3.8.

Esta guía va desde `brew install tmux` hasta sesiones, ventanas, paneles, plugins y el flujo de trabajo por SSH que merece usarse en un servidor real. También corrige los dos consejos que las guías viejas siguen haciendo mal: el arreglo de PATH en Apple Silicon y la trampa de "corre tmux con sudo".

Antes de empezar, esto es lo que necesitas:

<ListCheck>
<ul>
<li>Un Mac con macOS y una app de terminal (Terminal.app funciona, iTerm2, Wezterm o Ghostty son más agradables).</li>
<li>Homebrew, o acceso a internet para instalarlo (un comando abajo).</li>
<li>Unos 10 minutos para la instalación y la primera sesión.</li>
</ul>
</ListCheck>

Para un terminal más agradable donde correr tmux, mira la guía de [Wezterm Mac setup with tmux and zoxide](https://www.bitdoze.com/install-wezterm-mac/).

## ¿Qué es tmux?

[tmux](https://github.com/tmux/tmux/wiki) es un multiplexor de terminal. Corre dentro de una ventana de terminal y te da tres capas para organizar el trabajo:

1. Las sesiones son espacios de trabajo con nombre que sobreviven a desconexiones. Desconéctate de una y todo lo de dentro sigue corriendo.
2. Las ventanas son pestañas dentro de una sesión. La barra de estado las muestra como `0:bash 1:logs 2:ssh`.
3. Los paneles son divisiones dentro de una ventana. Una ventana puede mostrar varios shells lado a lado.

<YouTubeEmbed
  url="https://www.youtube.com/embed/vtB1J_zCv8I"
  label="Tmux in 100 Seconds by Fireship"
/>

Lo que hace que tmux merezca aprenderse:

1. Desconéctate de una sesión y reconéctate después, incluso desde otro ordenador. Los procesos largos siguen mientras tu portátil duerme.
2. Divide una ventana en paneles, horizontal o verticalmente, y conduce varios shells desde una pantalla.
3. Si una conexión SSH se cae, la sesión tmux en el servidor ni se entera. Reconéctate y tu trabajo está exactamente donde lo dejaste.
4. Los atajos de teclado, la barra de estado, los colores y el comportamiento son todos configurables desde un solo archivo.
5. Dos personas pueden conectarse a la misma sesión, lo cual es genuinamente útil para pair programming o para guiar a alguien en una corrección.

Los principiantes suelen sentirse torpes un día o dos, luego la tecla de prefijo (`Ctrl+b`) se vuelve memoria muscular. tmux se gana su sitio para cualquiera que ejecute builds, siga logs, trabaje en servidores remotos o haga malabares con más de una tarea en una terminal.

## Qué hay de nuevo en tmux 3.7 y 3.8

Dos versiones han aterrizado desde que esta guía se publicó por primera vez. Nada de lo de abajo es necesario para seguir el resto del artículo, pero merece la pena saber qué cambió.

- Paneles flotantes (3.7, completado en 3.8). `Ctrl+b *` abre un panel flotante que se superpone a la ventana actual en vez de dividirla. Los bindings de mover y redimensionar viven bajo `Ctrl+b g` (pulsa `Ctrl+b ?` para ver el grupo de bindings). tmux planea que los paneles flotantes reemplacen los popups en 3.9.
- Selector difuso (3.8). `Ctrl+b Tab` abre un buscador difuso sobre sesiones y ventanas. Más rápido que hacer scroll por `Ctrl+b w` cuando tienes un montón de ventanas.
- Temas integrados (3.8). tmux ahora trae temas claros y oscuros y una opción `theme`. Detecta el tema de tu terminal por defecto, y los colores por defecto se ven distintos al tmux viejo. Si quieres el aspecto clásico de vuelta, una línea en tu config lo hace (cubierto en la sección de personalización).
- Ayuda de modo (3.7). Pulsa `Ctrl+h` dentro del modo copia o cualquier otro modo para obtener ayuda de ese modo, no la tabla de teclas completa.
- Victorias menores. Números de línea en modo copia (`set -g copy-mode-line-numbers`), `focus-follows-mouse`, y un modo customize más limpio.

<Notice type="info" title="¿Actualizando desde un tmux más viejo?">
Si actualizas una instalación existente, no te saltes el paso de reinicio. tmux cambió su protocolo interno en 3.6, y un servidor viejo dejado corriendo rechazará nuevos clientes. La corrección está en <a href="#open-terminal-failed-not-a-terminal-tras-actualizar">la sección de resolución de problemas</a>.
</Notice>

Si quieres ver hacia dónde van las terminales más allá de tmux, [Superlogical Rex: el creador de Ghostty repiensa el multiplexor de terminal](https://www.bitdoze.com/superlogical-rex/) merece una lectura. Zellij es la alternativa moderna con pistas de UI integradas (~35,7k estrellas en GitHub frente a las ~49k de tmux). Yo sigo volviendo a tmux por defecto porque está preinstalado o a un `apt install tmux` de distancia en cada servidor Linux que toco, y ese es el entorno donde esta herramienta más importa.

## Primeros pasos con tmux

Instálalo, verifica el binario, luego arranca una sesión. Nada de esto necesita archivo de config todavía.

### Instala tmux en macOS

El camino por defecto es Homebrew. Si aún no tienes Homebrew:

1. Instala Homebrew:

   ```sh
   /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
   ```

   Sigue las instrucciones en pantalla. En Apple Silicon el instalador pone Homebrew en `/opt/homebrew` e imprime la línea `shellenv` que deberías añadir a `~/.zprofile`. Haz ese paso, previene los problemas de PATH descritos en resolución de problemas más abajo.

2. Instala tmux:

   ```sh
   brew install tmux
   ```

   Homebrew trae las dependencias. En macOS eso incluye jemalloc desde 3.7c (un workaround para un bug de `calloc` de macOS); no tienes que hacer nada, la fórmula lo maneja.

3. Verifica la instalación:

   ```sh
   tmux -V
   ```

   En una instalación fresca hoy eso imprime `tmux 3.8`. Cualquier cosa desde 3.6 en adelante seguirá esta guía bien.

Tabla: comandos de instalación de tmux

| Acción | Comando |
|--------|---------|
| Instalar Homebrew | `/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"` |
| Instalar tmux | `brew install tmux` |
| Verificar instalación | `tmux -V` |

Si `brew install tmux` falla, ejecuta `brew update` primero y comprueba que `brew doctor` no se queja de permisos en `/opt/homebrew`.

<Notice type="info" title="Instalar tmux en un servidor Linux">
Salta Homebrew por completo en Linux. tmux viene preinstalado en muchas imágenes de servidor, y si no: `sudo apt install tmux` en Debian/Ubuntu o `sudo dnf install tmux` en RHEL/Alma/Rocky. El resto de esta guía funciona igual ahí.
</Notice>

¿Quieres emparejar tmux con un terminal Mac moderno? La [guía de configuración del terminal Ghostty para Mac](/es/terminal-ghostty/) cubre una opción rápida acelerada por GPU.

<Button text="Lee la guía de configuración de Ghostty" link="/es/terminal-ghostty/" variant="outline" color="blue" size="md" />

### Arranca tu primera sesión tmux

Arranca una sesión nueva:

```sh
tmux
```

Tu terminal obtiene una barra de estado abajo y un shell fresco. Eso es una sesión con una ventana y un panel.

Mejor: nombra la sesión desde el principio para poder encontrarla después:

```sh
tmux new -s dev
```

Aún mejor, usa attach-or-create. Este es el único comando que recomiendo poner en un alias:

```sh
tmux new -A -s dev
```

Se conecta a `dev` si la sesión existe y la crea si no, lo que evita el error `can't find session`.

Para dejar que otro usuario se conecte a tu sesión (pair programming o resolución de problemas en vivo):

1. Arranca una sesión como siempre.
2. El otro usuario se conecta con `tmux attach -t nombre_sesion`.

Ambos veis y escribís en la misma sesión.

Para reconectarte a una sesión existente:

```sh
tmux attach -t nombre_sesion
```

Sin nombre se conecta a la sesión usada más recientemente. `tmux ls` lista todo lo que está corriendo:

```sh
tmux ls
# dev: 1 windows (created Sun Oct 12 10:00:00 2026)
```

Para desconectarte sin cerrar nada: pulsa `Ctrl+b`, luego `d`. La sesión sigue corriendo en segundo plano.

Para cerrar una sesión definitivamente, escribe `exit` en su última ventana, o mátala explícitamente:

```sh
tmux kill-session -t nombre_sesion
```

<Notice type="warning" title="Ctrl+b & mata la ventana">
`Ctrl+b` luego `&` cierra la ventana actual y cada panel dentro de ella. No es un atajo para "salir". Usa `Ctrl+b d` para desconectarte, `exit` para cerrar limpiamente, y guarda `Ctrl+b &` para cuando de verdad lo quieres decir.
</Notice>

Tabla: comandos básicos de sesión tmux

| Acción | Comando |
|--------|---------|
| Arrancar sesión nueva | `tmux` |
| Arrancar sesión con nombre | `tmux new -s nombre_sesion` |
| Conectar o crear (recomendado) | `tmux new -A -s nombre_sesion` |
| Conectar a sesión | `tmux attach -t nombre_sesion` |
| Listar sesiones | `tmux ls` |
| Desconectar de sesión | `Ctrl+b` luego `d` |
| Renombrar sesión | `tmux rename-session -t nombre_viejo nombre_nuevo` |
| Matar sesión | `tmux kill-session -t nombre_sesion` |
| Matar ventana actual | `Ctrl+b` luego `&` |

La tecla de prefijo `Ctrl+b` es cómo tmux distingue comandos de escritura. Púlsala, suelta ambas teclas, luego pulsa la tecla de comando. Cada binding de esta guía sigue ese patrón.

### Básicos de ventanas tmux

Las ventanas son la capa intermedia que la mayoría de guías para principiantes se saltan, y se nota en el momento en que miras la barra de estado y ves `0:bash 1:bash-*`. Una ventana es una pestaña. Los paneles viven dentro de las ventanas, las ventanas dentro de una sesión.

![Diagrama de jerarquía tmux: una sesión llamada dev conteniendo tres ventanas, con la ventana activa dividida en tres paneles, etiquetados con los atajos de teclado que controlan cada capa](@assets/images/24/09/tmux-session-window-pane.svg)

Los bindings que importan primero:

- Nueva ventana: `Ctrl+b c`
- Ventana siguiente / anterior: `Ctrl+b n` / `Ctrl+b p`
- Saltar a ventana por número: `Ctrl+b 0` hasta `Ctrl+b 9`
- Listar todas las ventanas y elegir una: `Ctrl+b w`
- Renombrar la ventana actual: `Ctrl+b ,`
- Cerrar la ventana actual: `Ctrl+b &` (luego confirma con `y`)

Renombra las ventanas en cuanto las crees. `2:ssh` gana a `2:bash-` cuando cambias a velocidad.

Tabla: comandos de ventana tmux

| Acción | Comando |
|--------|---------|
| Crear ventana | `Ctrl+b c` |
| Ventana siguiente / anterior | `Ctrl+b n` / `Ctrl+b p` |
| Seleccionar ventana por número | `Ctrl+b 0` ... `Ctrl+b 9` |
| Elegir de la lista | `Ctrl+b w` |
| Renombrar ventana actual | `Ctrl+b ,` |
| Cerrar ventana actual | `Ctrl+b` luego `&` |

### Paneles tmux

Los paneles dividen una única ventana en múltiples secciones, cada una corriendo su propio shell.

#### Dividir paneles

<Picture formats={["webp"]} fallbackFormat="webp"
  src={imag1}
  alt="Terminal de macOS mostrando una ventana tmux dividida en tres paneles con la barra de estado de tmux abajo"
/>

Usa el prefijo (`Ctrl+b`) más una tecla de división:

- Dividir verticalmente (izquierda y derecha):
  ```
  Ctrl+b %
  ```
- Dividir horizontalmente (arriba y abajo):
  ```
  Ctrl+b "
  ```

Sigue dividiendo paneles para construir el layout que la tarea necesite.

#### Navegar paneles

- Panel siguiente:
  ```
  Ctrl+b o
  ```
- Moverse por dirección:
  ```
  Ctrl+b <tecla de flecha>
  ```

Con el soporte de ratón activado (ver personalización abajo) también puedes hacer clic en un panel para enfocarlo.

#### Cerrar paneles

- Escribe `exit` en el panel, o
- `Ctrl+b x`, luego confirma con `y`.

#### Redimensionar panel tmux

El redimensionado interactivo es el que usarás a diario:

```
Ctrl+b Ctrl+<tecla de flecha>
```

Mantén Ctrl y toca una flecha para agrandar el panel en esa dirección.

Para control preciso, usa el modo comando:

```
Ctrl+b :
resize-pane -U 5
```

`-U` arriba, `-D` abajo, `-L` izquierda, `-R` derecha, con un número de celdas tras la bandera.

Tabla: comandos de panel tmux

| Acción | Comando |
|--------|---------|
| Dividir verticalmente | `Ctrl+b %` |
| Dividir horizontalmente | `Ctrl+b "` |
| Navegar al panel siguiente | `Ctrl+b o` |
| Navegar por dirección | `Ctrl+b <tecla de flecha>` |
| Cerrar panel actual | `Ctrl+b x` o `exit` |
| Modo redimensionar | `Ctrl+b :` luego `resize-pane -[U/D/L/R] <número>` |
| Redimensionado interactivo | `Ctrl+b Ctrl+<tecla de flecha>` |

Cuando olvides un binding, `Ctrl+b ?` abre la tabla de teclas completa, y `Ctrl+h` muestra ayuda del modo en que estés.

## Cambiar el aspecto de tmux

Todo esto vive en un solo archivo de config. tmux lee `~/.tmux.conf` o `~/.config/tmux/tmux.conf` (la ruta XDG, soportada desde tmux 3.1). Elige uno, no mantengas ambos. Yo uso `~/.config/tmux/tmux.conf` en montajes nuevos porque mantiene el home ordenado.

Tras cada edición, recarga:

```sh
tmux source ~/.tmux.conf
```

Convierte eso en una sola pulsación añadiendo esto a la config:

```sh
bind r source-file ~/.tmux.conf \; display-message "config reloaded"
```

Entonces `Ctrl+b r` recarga y confirma en la barra de estado. Este es el paso de verificación para cada cambio de abajo: edita, recarga, mira la barra de estado. Si nada cambió, `tmux source` habrá impreso un error de sintaxis.

<Notice type="warning" title="tmux 3.8 cambió los colores por defecto">
tmux 3.8 trae temas claros y oscuros integrados y elige uno detectando tu terminal. Si tu barra de estado de repente se ve distinta tras actualizar, es por eso. Restaura los colores ANSI pre-3.8 con:

```sh
set -s theme terminal
```

La opción acepta `detect`, `terminal`, `light` o `dark`. Los estilos también aceptan nombres de color conscientes del tema como `themewhite` y `themegreen`.
</Notice>

### 1. Personaliza la barra de estado

```sh
set -g status-style bg=black,fg=white
set -g status-position top
set -g status-left "[Session: #S] "
set -g status-right "%H:%M %d-%b-%y"
```

### 2. Estilo de ventanas y paneles

```sh
set -g window-status-current-style bg=yellow,fg=black
set -g window-status-style bg=green,fg=black
set -g pane-border-style fg=green
set -g pane-active-border-style fg=yellow
```

### 3. Activa el soporte de ratón

Merece la pena en un Mac. Clic para enfocar paneles, arrastrar bordes para redimensionar, y arrastrar para seleccionar texto en modo copia:

```sh
set -g mouse on
```

### 4. Cambia la tecla de prefijo

Si `Ctrl+b` choca con tu editor o shell, rebindealo. `Ctrl+a` es la opción común (es lo que usa GNU screen):

```sh
unbind C-b
set-option -g prefix C-a
bind-key C-a send-prefix
```

### 5. Usa un tema

En tmux 3.8 la opción integrada `theme` cubre la mayoría de necesidades: fuerza `dark`, fuerza `light`, o sigue al terminal. Solo echa mano de un tema empaquetado si quieres algo más opinado.

La ruta clásica es TPM más un plugin de tema como `jimeh/tmux-themepack`. Sigue funcionando, aunque el pack no se actualiza desde 2024:

```sh
set -g @plugin 'tmux-plugins/tpm'
set -g @plugin 'jimeh/tmux-themepack'
set -g @themepack 'powerline/default/cyan'

run '~/.tmux/plugins/tpm/tpm'
```

Recarga la config y pulsa `prefix` + `I` para traerlo. Si el tema se renderiza raro bajo el nuevo sistema de temas de 3.8, vuelve a `set -s theme dark` y sigue adelante.

Recuerda: el shell dentro de tmux es cualquiera que sea tu login shell. macOS usa zsh por defecto, y si quieres un shell más amigable en general, [Fish Shell en macOS](/es/fish-shell-macos-configuracion/) es una opción sólida.

Tabla: comandos comunes de personalización tmux

| Personalización | Comando en tmux.conf |
|---------------|----------------------|
| Binding de recarga de config | `bind r source-file ~/.tmux.conf \; display-message "config reloaded"` |
| Forzar un tema 3.8 | `set -s theme terminal` (o `dark` / `light` / `detect`) |
| Color de barra de estado | `set -g status-style bg=color,fg=color` |
| Posición de barra de estado | `set -g status-position [top/bottom]` |
| Color de ventana (activa) | `set -g window-status-current-style bg=color,fg=color` |
| Color de borde de panel | `set -g pane-border-style fg=color` |
| Activar ratón | `set -g mouse on` |
| Cambiar tecla de prefijo | `set-option -g prefix C-[tecla]` |

## Plugins de tmux

Los plugins extienden tmux con cosas que el núcleo deliberadamente deja fuera: restauración de sesiones, integración de portapapeles, widgets de estado. El Tmux Plugin Manager (TPM) los instala y actualiza.

### Instalar Tmux Plugin Manager (TPM)

TPM necesita tmux 1.9 o más nuevo, git y bash. Todo presente en una máquina macOS o Linux normal.

1. Clona el repositorio de TPM:

   ```sh
   git clone https://github.com/tmux-plugins/tpm ~/.tmux/plugins/tpm
   ```

2. Añade esto al final de tu tmux.conf:

   ```sh
   # List of plugins
   set -g @plugin 'tmux-plugins/tpm'
   set -g @plugin 'tmux-plugins/tmux-sensible'

   # Initialize TMUX plugin manager (keep this line at the very bottom of tmux.conf)
   run '~/.tmux/plugins/tpm/tpm'
   ```

3. Recarga la config (`tmux source ~/.tmux.conf`) y pulsa `prefix` + `I` para traer los plugins.

### Plugins populares de tmux

<ListCheck>
<ul>
<li><strong>tmux-resurrect</strong> guarda y restaura sesiones entre reinicios. Este es el que se paga solo.</li>
<li><strong>tmux-continuum</strong> automatiza resurrect, incluyendo auto-restauración al arrancar tmux cuando pones <code>@continuum-restore 'on'</code>.</li>
<li><strong>tmux-yank</strong> copia al portapapeles del sistema vía <code>pbcopy</code> en macOS. La corrección de portapapeles fiable en Terminal.app.</li>
<li><strong>tmux-battery</strong> pone el porcentaje de batería en la barra de estado, útil en un portátil.</li>
<li><strong>tmux-cpu</strong> pone el uso de CPU en la barra de estado, útil cuando un build se está comiendo la máquina.</li>
</ul>
</ListCheck>

```sh
set -g @plugin 'tmux-plugins/tmux-resurrect'
set -g @plugin 'tmux-plugins/tmux-continuum'
set -g @plugin 'tmux-plugins/tmux-yank'
set -g @plugin 'tmux-plugins/tmux-battery'
set -g @plugin 'tmux-plugins/tmux-cpu'
```

Una salvedad honesta: resurrect, continuum y yank son proyectos tranquilos (sin commits significativos desde 2024). Son estables y siguen funcionando con tmux 3.8, y TPM los instala bien.

### Por qué existen resurrect y continuum

tmux te protege contra desconexiones, no contra reinicios. Un reinicio del Mac o del VPS mata cada sesión y cada proceso dentro de ellas. Ese es el modo de fallo que resurrect resuelve: `prefix` + `Ctrl+s` guarda el estado actual, `prefix` + `Ctrl+r` lo restaura. Continuum hace el guardado por ti en un temporizador y restaura al arrancar. Si corres algo en tmux que tarda más que un café en recrearse, instala ambos.

### Instalar y usar plugins

1. Añade la línea `set -g @plugin '...'` a tu tmux.conf.
2. Pulsa `prefix` + `I` (i mayúscula) para traer e instalar.
3. Recarga con `tmux source ~/.tmux.conf` si el plugin no se activa inmediatamente.

### Gestionar plugins

- Instalar plugins: `prefix` + `I`
- Actualizar plugins: `prefix` + `U`
- Quitar plugins que no están en tu config: `prefix` + `alt` + `u`

Tabla: comandos básicos de TPM

| Acción | Comando |
|--------|---------|
| Instalar plugins | `prefix` + `I` |
| Actualizar plugins | `prefix` + `U` |
| Quitar plugins sin usar | `prefix` + `alt` + `u` |

### Configuración de ejemplo con plugins

```sh
# List of plugins
set -g @plugin 'tmux-plugins/tpm'
set -g @plugin 'tmux-plugins/tmux-sensible'
set -g @plugin 'tmux-plugins/tmux-resurrect'
set -g @plugin 'tmux-plugins/tmux-continuum'
set -g @plugin 'tmux-plugins/tmux-yank'

# Plugin configurations
set -g @continuum-restore 'on'

# Initialize TMUX plugin manager (keep this line at the very bottom of tmux.conf)
run '~/.tmux/plugins/tpm/tpm'
```

Prueba unos cuantos plugins, quédate con los que se ganen su sitio en tu config.

## Usar tmux con SSH

Aquí es donde tmux deja de ser un juguete. Si trabajas en servidores remotos, tmux dentro de SSH es la diferencia entre que una conexión caída sea un no-evento y perder veinte minutos de montaje.

<Notice type="info" title="Un comando para recordar">
En el servidor, ejecuta <code>tmux new -A -s dev</code>. Se conecta a tu sesión de trabajo si existe y la crea si no. Ponlo en un alias de shell, o cablealo en <code>~/.ssh/config</code> como <code>RemoteCommand</code> para que cada login aterrice dentro de tmux.
</Notice>

El flujo de trabajo:

1. SSH al servidor:

   ```bash
   ssh tu_usuario@direccion_servidor
   ```

2. Arranca (o únete a) tu sesión:

   ```bash
   tmux new -A -s dev
   ```

3. Haz tu trabajo. Los trabajos largos (builds, `docker compose up`, seguimiento de logs, [SSH port forwarding (tunneling)](https://www.bitdoze.com/ssh-tunneling-linux/)) van en su propia ventana para que una reconexión no se los lleve por delante.

4. Desconéctate al irte: `Ctrl+b`, luego `d`. Cierra el portátil, cambia de red, lo que sea. Reconéctate con el mismo `tmux new -A -s dev` después.

Mientras estás ahí dentro: `tmux ls` lista sesiones, `tmux kill-session -t nombre_sesion` mata una, y `tmux rename-session -t nombre_viejo nombre_nuevo` la renombra.

Lo que ganas: el trabajo sobrevive caídas de SSH y cambios de red, puedes correr varias tareas en una conexión (ventanas y paneles), y las sesiones con nombre mantienen los proyectos separados en una máquina compartida. De lo que tmux no te salva: un reinicio del servidor sigue matando la sesión y todo lo de dentro (mira resurrect/continuum arriba).

Dos cosas que resolver antes de que tmux siquiera importe en el servidor: sabe [cómo asegurar un servidor SSH](https://www.bitdoze.com/secure-ssh-server-linux/) (claves, sin login root, fail2ban o equivalente), y si tus logins ya están fallando, [arreglar los fallos de autenticación SSH](https://www.bitdoze.com/fix-ssh-too-many-authentication-failures/) va primero.

Si aún no tienes un servidor donde practicar, un [Hetzner Cloud VPS](https://go.bitdoze.com/hetzner) económico basta para este flujo de trabajo. Una máquina CX pequeña corre tmux, tus builds y un puñado de contenedores Docker cómodamente.

## Resolución de problemas comunes

Incluso con una instalación limpia, unas cuantas cosas muerden a la gente en macOS. Cada elemento de abajo es síntoma, causa, solución.

### tmux command not found

Si el shell dice `command not found: tmux`, o Homebrew no lo instaló o tu PATH no incluye Homebrew.

1. Comprueba la instalación:

   ```sh
   brew list | grep tmux
   ```

   Salida vacía significa que tmux no está instalado. Ejecuta `brew install tmux`.

2. Arregla el PATH. Apple lleva vendiendo Macs Apple Silicon desde finales de 2020, y la mayoría de Macs en uso hoy ponen Homebrew en `/opt/homebrew`, no en `/usr/local`. El instalador de Homebrew normalmente añade la línea correcta por ti. Si no lo hizo, añádela tú mismo y reinicia el terminal:

<Tabs>
<Tab name="Apple Silicon">

```sh
# add to ~/.zprofile
eval "$(/opt/homebrew/bin/brew shellenv)"
```

</Tab>
<Tab name="Mac Intel">

```sh
# add to ~/.zprofile
eval "$(/usr/local/bin/brew shellenv)"
```

</Tab>
</Tabs>

macOS corre zsh por defecto, así que `~/.zshrc` y `~/.zprofile` son los archivos que quieres, no `~/.bash_profile`. Las guías viejas que te dicen `export PATH="/usr/local/bin:$PATH"` están escritas para hardware Intel. Ya que estás en la config de zsh, los [mejores plugins de Oh My ZSH](https://www.bitdoze.com/best-oh-my-zsh-plugins/) merecen un vistazo.

### `open terminal failed: not a terminal` tras actualizar

Este está documentado en las notas de versión de tmux 3.6 y repetido para cada release desde entonces: es muy importante reiniciar tmux por completo tras actualizar. tmux cambió su protocolo interno en 3.6. Si ejecutas `brew upgrade tmux` mientras un servidor viejo sigue corriendo, `tmux attach` falla con exactamente:

```
open terminal failed: not a terminal
```

La corrección:

```sh
brew update && brew upgrade tmux
tmux kill-server
tmux
```

<Notice type="warning" title="Reinicia siempre tmux tras actualizar">
`tmux kill-server` mata cada sesión y los trabajos corriendo dentro de ellas. Guarda tu trabajo primero. Si no puedes permitirte perder el estado de la sesión, para eso son exactamente tmux-resurrect y tmux-continuum (mira la <a href="#plugins-de-tmux">sección de plugins</a>): guarda con `prefix` + `Ctrl+s` antes de actualizar.
</Notice>

### Problemas de permisos

<Notice type="error" title="Nunca corras tmux con sudo">
`sudo tmux` arranca un servidor tmux propiedad de root y destroza el socket en `/tmp/tmux-501` (el `501` es tu ID de usuario). Después, tu usuario normal no puede conectarse a sus propias sesiones. Si las cosas ya están rotas: sal de cada cliente, ejecuta `tmux kill-server`, revisa `ls -ld /tmp/tmux-*` por restos propiedad de root, elimina solo lo que posees, y arranca tmux de nuevo como tu usuario normal. No hay tarea de tmux que requiera root en tu propia máquina.
</Notice>

### `no server running` tras un reinicio

Ejecuta `tmux ls` tras un reinicio del Mac o del VPS y verás:

```
no server running on /tmp/tmux-501/default
```

Eso es normal, no un error. tmux protege contra desconexiones, no contra pérdida de energía. Cuando la máquina reinicia, el servidor tmux muere y se lleva sus sesiones con él.

- Si instalaste resurrect, restaura con `prefix` + `Ctrl+r` (o `prefix` + `Ctrl+s` antes para guardar).
- Si no, empieza de cero con `tmux new -A -s dev` y reconstruye.

Para perder menos la próxima vez, vuelve a la sección de plugins e instala resurrect más continuum.

### Sesiones tmux perdidas

Antes de asumir que una sesión se ha ido:

1. Lista sesiones con `tmux ls`.
2. Conéctate con `tmux attach -t nombre-sesion` (o `tmux attach` para la más reciente).
3. ¿Sigue sin haber nada? El servidor no está corriendo. O lo mataron, o la máquina reinició. Revisa la sección anterior.

### Copiar-pegar en macOS

Copiar y pegar dentro de tmux usa su propio buffer, que es por lo que `Cmd+C` no hace lo que esperas.

El bucle básico:

1. Entra en modo copia: `Ctrl+b [`
2. Muévete, selecciona texto (con `set -g mouse on`, arrastrar selecciona y copia al buffer de tmux).
3. Pega desde el buffer: `Ctrl+b ]`

Para sacar texto al portapapeles de macOS hay dos rutas realistas:

- tmux-yank funciona en todas partes. El plugin de la sección de plugins de arriba cablea las copias a `pbcopy`. En Terminal.app esta es la opción fiable.
- OSC 52 necesita soporte del terminal. `set -g set-clipboard external` hace que tmux pida al terminal que establezca el portapapeles del sistema directamente. iTerm2, Wezterm y kitty soportan la secuencia de escape subyacente; Terminal.app no.

Si la integración de portapapeles se porta mal, revisa `Ctrl+b ?` y `man tmux` para los bindings actuales y la opción `set-clipboard` (`on`, `external`, `off`) en vez de fiarte de posts de blog viejos. Esta es un área donde los defaults de tmux han cambiado entre versiones.

### tmux no arranca correctamente

- Prueba la config con `tmux source-file ~/.tmux.conf`. Un error de sintaxis imprime el número de línea. Arréglalo y recarga.
- Actualiza con `brew update && brew upgrade tmux`, luego reinicia el servidor como se describe arriba.
- Como último recurso, `tmux kill-server` y empieza limpio. Cada sesión muere con él, así que desconecta todo lo que te importe primero.

### Los keybindings no funcionan

- Recarga tras cada edición de config (`tmux source-file ~/.tmux.conf` o tu binding `Ctrl+b r`). La config no se relee automáticamente.
- Comprueba el binding en `Ctrl+b ?`. Si tu tecla está tomada por un modo (modo copia, por ejemplo), bindeala para la tabla raíz en su lugar.
- Una tecla de prefijo cambiada es la sospechosa habitual tras copiar la config de otro. Si `Ctrl+b` deja de funcionar, busca `set-option -g prefix` en el archivo.

### Problemas de visualización y congelamiento

- App de terminal. tmux corre en cualquier cosa razonable, pero iTerm2, Wezterm y Ghostty manejan el redimensionado y el color más limpiamente que Terminal.app.
- Layout roto tras redimensionar. `Ctrl+b :` luego `resize-pane -D` (o `-U`), o `tmux refresh-client -S` para forzar un redibujado.
- Panel congelado. El proceso dentro puede estar simplemente ocupado o esperando input. Prueba el propio `Ctrl+C` del panel. Si el cliente entero está atascado, `tmux kill-server` es el instrumento contundente; revisa primero la presión de memoria si sigue pasando (`Activity Monitor`, o `top` en otro panel).

## FAQ

<Accordion label="¿Sobrevive tmux a un reinicio?" group="faq" expanded="true">
No. Las sesiones tmux sobreviven a desconexiones SSH y a ventanas de terminal cerradas, no a reinicios. Cuando la máquina reinicia, el servidor tmux muere con ella. tmux-resurrect guarda el estado de la sesión en disco y tmux-continuum lo restaura automáticamente, que es lo más cerca que llegas a sobrevivir un reinicio.
</Accordion>

<Accordion label="¿tmux vs screen vs Zellij: cuál?" group="faq">
GNU screen es el viejo default y sigue apareciendo en servidores antiguos; úsalo solo cuando tmux no sea instalable. Zellij es la alternativa moderna con pistas de UI integradas y menos config, pero tmux es el default pragmático: preinstalado o a un `apt install tmux` de distancia en casi todo servidor Linux, con un ecosistema de plugins estable desde hace años. Si quieres la visión larga, [Superlogical Rex: el creador de Ghostty repiensa el multiplexor de terminal](https://www.bitdoze.com/superlogical-rex/) es una buena lectura.
</Accordion>

<Accordion label="¿Cómo salgo de tmux por completo?" group="faq">
Escribe `exit` en cada panel hasta que la sesión se cierre, o pulsa `Ctrl+b` luego `&` para matar la ventana actual (y sus paneles), o mata una sesión con nombre con `tmux kill-session -t nombre`. Para parar el servidor tmux por completo, `tmux kill-server`. Desconectarte (`Ctrl+b d`) no cierra nada; solo desconecta tu vista.
</Accordion>

<Accordion label="¿Cuál es la tecla de prefijo de tmux?" group="faq">
`Ctrl+b` por defecto. Púlsala y suéltala, luego pulsa la tecla de comando (por ejemplo `Ctrl+b` luego `d` para desconectar). Le dice a tmux que la siguiente pulsación es un comando y no texto. Mucha gente la rebindea a `Ctrl+a`; si tus bindings de repente no hacen nada, la config de alguien probablemente cambió el prefijo.
</Accordion>

<Accordion label="¿Dónde está el archivo de config de tmux?" group="faq">
O `~/.tmux.conf` o `~/.config/tmux/tmux.conf`. tmux lee la ruta XDG desde 3.1. Elige una ubicación; si existen ambas, `~/.tmux.conf` gana. Recarga tras las ediciones con `tmux source ~/.tmux.conf` o el binding `Ctrl+b r` de la sección de personalización.
</Accordion>

## Conclusión

Ahora tienes tmux instalado en macOS, verificado con `tmux -V`, y los comandos básicos bajo tus dedos: sesiones para mantener el trabajo vivo, ventanas para organizarlo, paneles para verlo lado a lado. Las secciones de personalización y plugins están ahí cuando los defaults empiecen a molestarte, y la sección de SSH es donde esta herramienta paga el alquiler en servidores remotos.

Próximos pasos que yo tomaría, en orden:

1. Haz que el hábito SSH funcione: `tmux new -A -s dev` al hacer login, desconecta en vez de cerrar el terminal.
2. Instala resurrect y continuum para que un reinicio sea un encogimiento de hombros en vez de una reconstrucción.
3. Una vez que tmux se sienta natural, sube de nivel con estos [comandos esenciales de Linux](https://www.bitdoze.com/linux-commands/).
4. Cuando el propio terminal empiece a sentirse limitante, [Starship + Ghostty: Turbocharge Your Mac Terminal Setup](https://www.bitdoze.com/starship-ghostty-terminal/) es la siguiente capa.

Practica los bindings una semana y dejan de ser una lista de teclas.

<Button text="Monta Wezterm con tmux y zoxide" link="/install-wezterm-mac/" variant="solid" color="blue" size="md" />