Si pasas una cantidad ingente de tiempo en la terminal. Y cuando es tu herramienta principal, quieres que sea cómoda, potente y, por qué no, linda. Aquí es donde entra en juego `tmux`, el multiplexor de terminal que te permite tener múltiples sesiones, ventanas y paneles en un solo lugar.

Pero `tmux` por defecto es… bueno, es funcional. Para desatar su verdadero potencial, necesitas un buen archivo de configuración. Hoy quiero contarles mi viaje, un proceso de prueba y error, para llegar a una configuración de la que estoy realmente orgulloso, perfectamente adaptada para macOS.
## Paso 1: La Base y los Plugins
No empecé de cero. Encontré un Gist bastante popular que parecía un excelente punto de partida. Tenía una buena selección de plugins gestionados con [TPM (Tmux Plugin Manager)](https://github.com/tmux-plugins/tpm), que es la forma moderna de manejar esto.
La lista de plugins inicial era esta:
* `tmux-plugins/tpm`: El propio gestor de plugins.
* `tmux-plugins/tmux-sensible`: Un conjunto de configuraciones de sentido común que arreglan algunas de las peculiaridades de `tmux`.
* `christoomey/vim-tmux-navigator`: ¡Esencial! Permite navegar entre paneles de `tmux` y splits de Vim usando las mismas teclas (`Ctrl + h/j/k/l`).
* `dreamsofcode-io/catppuccin-tmux`: Si voy a pasar horas aquí, ¡que se vea bien!
* `tmux-plugins/tmux-yank`: Mejora la integración del portapapeles del sistema con el de `tmux`.
* `tmux-plugins/tmux-continuum` y `tmux-plugins/tmux-resurrect`: Guardan mi entorno de `tmux` automáticamente y lo restauran después de un reinicio. ¡Nunca más perderé mi layout!
Con esto ya tenía una base sólida, pero era hora de hacerla mía.
## Paso 2: La Batalla por los Atajos de Teclado
Aquí es donde empezó el verdadero trabajo de personalización. Lo primero que quise cambiar fue la forma de dividir paneles. Por defecto son `Ctrl-a %` y `Ctrl-a “`, que no me resultan nada intuitivos.
**La Solución Final:** Tras un poco de frustración, encontré la solución. Usar las teclas `-` (guion) y `=` (igual). Están juntas, en el lado derecho, y no entran en conflicto con nada.
* `Ctrl-a -` para división horizontal.
* `Ctrl-a =` para división vertical.
¡Perfecto! Simple, ergonómico y sin conflictos.
## Paso 3: Mejoras de Calidad de Vida
Con los atajos principales resueltos, me enfoqué en los detalles:
1. **Soporte para el Ratón:** Añadiendo `set -g mouse on`, de repente podía hacer clic en los paneles para seleccionarlos, arrastrar los bordes para cambiar su tamaño y, lo mejor de todo, hacer scroll con la rueda del ratón.
2. **Limpieza de Errores:** Durante el proceso, me encontré con algunos errores. La configuración base tenía unas opciones `utf8` que son obsoletas en versiones modernas de `tmux`. También encontré un error de sintaxis en el atajo para recargar la configuración (`Ctrl-a r`), donde faltaba una barra invertida. Corregir estos pequeños detalles dejó el archivo limpio y funcional.
## La Configuración Final
Después de todo este proceso, este es el archivo `.tmux.conf` con el que terminé. Siéntete libre de usarlo.
# Set prefix to Ctrl+a
unbind C-b
set -g prefix C-a
bind C-a send-prefix
# Set backtick as an additional prefix
set -g prefix2 `
# UTF-8 is on by default in modern tmux versions, these are deprecated
# set -g utf8 on
# set -g status-utf8 on
# 256 colors
set -g default-terminal "screen-256color"
# Increase scrollback buffer size
set -g history-limit 50000
# Decrease command delay
set -g escape-time 1
# Super useful when using "grouped" sessions
setw -g aggressive-resize on
# Enable mouse mode
set -g mouse on
# Set status bar position to top
set -g status-position top
# Use vim keybindings in copy mode
setw -g mode-keys vi
# Setup 'v' to begin selection as in Vim
bind-key -T copy-mode-vi v send-keys -X begin-selection
bind-key -T copy-mode-vi y send-keys -X copy-pipe "pbcopy"
# Update default binding of `Enter` to also use copy-pipe
unbind -T copy-mode-vi Enter
bind-key -T copy-mode-vi Enter send-keys -X copy-pipe "pbcopy"
# Reload tmux config
bind r source-file ~/.tmux.conf \; display "Reloaded!"
# Custom bindings for splitting panes
bind - split-window -v # Horizontal split (-)
bind = split-window -h # Vertical split (=)
# Don't exit from tmux when closing a session
set -g detach-on-destroy off
# Plugin Manager - TPM
# https://github.com/tmux-plugins/tpm
set -g @plugin 'tmux-plugins/tpm'
# List of plugins
set -g @plugin 'tmux-plugins/tmux-sensible'
set -g @plugin 'christoomey/vim-tmux-navigator'
set -g @plugin 'dreamsofcode-io/catppuccin-tmux'
set -g @plugin 'tmux-plugins/tmux-yank'
set -g @plugin 'tmux-plugins/tmux-continuum'
set -g @plugin 'tmux-plugins/tmux-resurrect'
# Catppuccin settings
set -g @catppuccin_window_left_separator "?"
set -g @catppuccin_window_right_separator "? "
set -g @catppuccin_window_middle_separator " ?"
set -g @catppuccin_window_number_position "right"
set -g @catppuccin_window_default_fill "number"
set -g @catppuccin_window_default_text "#W"
set -g @catppuccin_window_current_fill "number"
set -g @catppuccin_window_current_text "#W"
set -g @catppuccin_status_modules_right "directory meetings date_time"
set -g @catppuccin_status_left_separator " ?"
set -g @catppuccin_status_right_separator "?"
set -g @catppuccin_status_fill "icon"
set -g @catppuccin_status_connect_separator "no"
set -g @catppuccin_directory_text "#{pane_current_path}"
set -g @catppuccin_meetings_text "#($HOME/.config/tmux/scripts/cal.sh)"
set -g @catppuccin_date_time_text "%H:%M"
## Cómo Instalar Esta Configuración
Si te ha gustado, aquí tienes los pasos para tenerla:
1. Guarda el código de arriba en `~/.tmux.conf`.
2. Instala el gestor de plugins TPM con este comando:
git clone https://github.com/tmux-plugins/tpm ~/.tmux/plugins/tpm
3. Abre `tmux` y presiona `Ctrl-a` + `I` (la letra i mayúscula) para que TPM instale todos los plugins.
¡Y ya está!
## Conclusión
Invertir tiempo en tus herramientas de trabajo siempre vale la pena. Este viaje de configuración me ha dejado con un entorno de `tmux` que no solo es potente, sino también increíblemente cómodo y personal. Espero que mi experiencia te sirva de inspiración para domar tu propia terminal.