Tmux: Instalación y primeros pasos. My configuración personal para desarrollo Parte 1
Cuando comienzas a trabajar en el desarrollo de software, generalmente te enfocas en aprender un nuevo stack tecnológico. Sin embargo, no mucha gente se centra en mejorar sus habilidades con las herramientas.
Una de las herramientas que me ayuda cada día cuando trabajo con diferentes carpetas y proyectos es Tmux.
Tmux es un multiplexor de terminales que te permite ejecutar diferentes sesiones dentro de una sola ventana. Con Tmux, puedes crear múltiples paneles dentro de una única ventana de terminal, cada uno ejecutando su propia aplicación o shell. Esto facilita trabajar con varias tareas simultáneamente sin tener que cambiar entre pestañas o ventanas de tu terminal. Tmux admite la gestión de ventanas y sesiones, lo que te permite mover y redimensionar paneles, crear nuevas ventanas, y entrar y salir de las sesiones.
📦 Instalando Tmux
macOS
En Mac, es muy fácil instalar Tmux. Sólo necesitas Brew, y después ya puedes instalarlo.
Linux y WSL
Dependiendo en la distribución en la que estés trabajando, la manera de instalar Tmux será diferente. Aquí algunos comandos para las distros que he utilizado en los últimos años.
Estos comandos son iguales entre tu distribución de Linux favorita y WSL, mientras pertenezcan a la misma versión del sistema operativo.
👟 Sesiones, Ventanas y Paneles en breve
Imagina que tenemos que trabajar en dos proyectos: El Proyecto Patata 🥔 (Potatoe) y el Proyecto Girasol (Sunflower) 🌻.
Podemos tomar ventaja de las Sesiones para crear los dos.
Por cada proyecto, necesitamos trabajar con el backend y el frontend. Podemos usar una Ventana para cada uno de ellos. Por cada proyecto, también necesitmoas tener dos Paneles lado a lado para ejectuar npm run start
y npm test
al mismo tiempo.
Pero antes, el atajo <Prefijo>
La combinación prefijo es el atajo de teclado principal para combinarlo con otros atajos de Tmux. Por defecto, es una combinación de Ctrl + b
o ^ + b
en Mac.
Para los siguientes tutoriales, usa este prefijo. Si ya lo has cambiado antes, úsalo como lo hayas configurado.
Sesiones
Vamos a encargarnos de la configuración de Tmux después en este post, pero al leer algunos comandos, ya podemos imaginar como funciona. Utilizo nombres de sesion cortos porque si quiero entrar a una sesión específica, es mucho más fácil de escribirla.
Ahora, nuestro server de Tmux tiene dos sesiones corriendo. La opción -d
, es usada para evitar entrar en la sesión una vez creada, así que podemos seguir trabajando sobre nuestra terminal. Remueve la opción si quieres entrar a la sesión una vez creada.
Ventanas
Cuando entramos a nuestra sesión, entramos a nuestra primera ventana al mismo tiempo. El título de esa ventana es usualmente el nombre del shell que estés usando. En mi caso es zsh
, pero en tu caso, podría ser bash
u otro más.
Ahora, recuerda que estamos dentro del proyecto girasol
. Necesitamos crear una ventana para el backend y otra para el frontend.
Un truco para recordar las ventanas, es compararlas con pestañas de navegador.
Renombrando ventanas
Una vez abierto, escribe el nuevo nombre de la ventana: backend y presiona <Enter>
.
Creando una nueva ventana
Moviéndose entre ventanas
Si quieres moverte entre las ventanas de tu proyecto backend y frontend, puedes usar:
Paneles
Los paneles son divisiones de una ventana. Diría que son la principal razón por la cual uso Tmux, como desarrollador de NodeJS. Es un requerimiento diario de manejar o ejecutar más de un comando al mismo tiempo para proyectos en NodeJS.
Ahora, queremos tener dos paneles paralelos, para ejecutar npm start
en uno y npm test
a su lado. Puedes crear una panel horizontal con.
Pero si prefieres la orientación vertical, usa este comando.
Moverse entre paneles
Para moverte entre los paneles que has creado, puedes usar <Prefijo>
combinado con las flechas de dirección. Esto nos da cuatro combinaciones en total: arriba, izquierda, derecha y abajo.
📦 Mi configuración personal
Después de un año de usar Tmux, traté de buscar diversas maneras para mejorar mi flujo de trabajo. He descubierto algunas mejoras que podrían ser útiles para ti.
Cada una de ellas requiere que crees un archivo llamado .tmux.conf
en tu directorio raíz. Esto aplica para cada sistema operativo excepto Windows, pero si WSL.
Cambiando el prefijo
Sabiendo que presionar Ctrl + b
(o equivalente en Mac) puede ser dificil ya que ambas teclas están lejos una de otra. Lo reemplacé con Ctrl + Espacio
porque puedo presionar ambas teclas con el primer y último dedo de mi mano izquierda.
Para realizar este cambio, actualiza tu archivo ~/.tmux.conf
con el siguiente contenido. Vamos a deshabilitar Ctrl + b
antes de usar el nuevo prefijo.
Una simple manera de recargar la configuración
Ya que vamos a hacer distintas modificaciones a este archivo, necesitamos una manera rápida de recargar la configuración. Vamos a mostrar la manera original primero y después el atajo que yo tengo.
La manera original
Puedes usar <Prefijo> + :
parar abrir Tmux en modo comando y escribir lo siguiente:
Mi atajo personal
En tu archivo ~/.tmux.conf
, agrega la siguiente línea. Después de escribirla, si aún sigues dentro de tu sesión Tmux, usa el método original para recargar la configuración. Sólo por esta vez.
Actualizando el índice de cero a uno
Tal vez conozcas, o no, la broma popular de que los desarrolladores usan 0
en lugar de 1
como número índice principal para comenzar a contar. Sin embargo, cuando usas Tmux, si quieres navegar directamente a la primera ventana, necesitas cruzar tus dedos en el teclado para ejecutar tal atajo. Afortunadamente, puedes usar 1
como tu número índice. Además, si eliminas una ventana, por defecto Tmux dejará ese número de ventana vacío. Puedes cambiarlo también, lo cual es algo que yo recomiendo.
Automáticamente renumerar una ventana si una de ellas es eliminada
Poner el índice de las ventanas a 1, y también para los paneles
Configuración para un shell diferente
Yo uso Zsh en lugar de Bash. Siempre puedes iniciar tus sesiones de Tmux con Zsh haciendo referencia a la dirección del shell.
Puedes ejecutar which zsh
de antemano para saber el directorio de tu shell y reemplazarlo en Tmux con el siguiente script. Para mí es /bin/zsh
.
Moverse entre paneles como en Vim
Otro paso adicional. Puedes moverte entre paneles usando <Prefijo> + <Flecha>
. Sin embargo, si prefieres tener un entorno similar a Vim, puedes usar <Prefijo> + <h | j | k | l>
como atajos de movimiento.
Como habrás visto, después de usar <Prefijo>
la primera vez, no necesitamos hacerlo otra vez. Esto es por la opción -r
, que te evita de presionar otra vez el prefijo.
Redimensionando paneles desde el teclado
Además, si no quieres usar el ratón para redimensionar tus paneles, puedes usar la versión en mayúsculas de las mismas letras usadas para moverse en Vim. En adición, usar la opción -r
nos permite no tener que usar el prefijo por un tiempo limitado.
El número 5 en el siguiente ejemplo, representa la medida que estás redimensionando, puedes incrementarlo y disminuirlo de acuerdo a tus necesidades.
Mis atajos personales
Agregar soporte de true colors para tus sesiones Tmux
Para hacer que tu sesión de Tmux funcione con todos esos temas y colores modernos que has visto en diferentes publicaciones de Reddit, necesitas configurarlo. Vamos a indicar a Tmux como podemos agregar soporte para true color.
Usando el ratón
Si quieres usar el ratón para redimensionar tus paneles, o para hacer click sobre el nombre de una ventana. Puedes habilitarlo con la siguiente línea.
Formato a la barra de estado
Si quieres mostrar la barra de estado y el número de ventana con el comando ejecutado, utiliza el siguiente código.
Modo Vi
Si quieres tener atajos similares a Vim para copiar y pegar, puedes habilitar el modo Vi.
Abrir un panel en el mismo directorio del panel de origen
Si quieres abrir una división vertical u horizontal en el mismo directorio donde estabas trabajando, tengo dos atajos personales para hacerlo. Uso la tecla |
para crear un panel vertical y -
para uno horizontal. Además pienso que ésta es una mejor combinación que %
y "
.
🛠️ Instalando TPM y plugins
Instalando TPM
TPM es el Tmux Plugin Manager. Así como tu lenguaje favorito, puedes usar plugins para agregar o extender características de Tmux.
Para instalarlo, copia las siguientes líneas de código y pégalas al final de tu ~/.tmux.conf
. Asegúrate de recargar la configuración después.
Algunos plugins útiles
En algún punto, querrás extender las características de Tmux. Aquí está mi lista preferida de plugins que te ayudarán con eso.
Tmux sensible
Provee muchos atajos y mejoras a la configuración que viene por defecto, que en mi opinión es mucho mejor a la que viene con la instalación.
Date una vuelta por el repositorio original: https://github.com/tmux-plugins/tmux-sensible
Tmux resurrect
Si tienes un espacio de trabajo con varias ventanas y paneles que no quieres perder cuando reinicies tu computadora. Tmux tiene este plugin que te permite almacenar tu organización de sesiones y restaurarlas después con un par de atajos de teclado.
Los atajos más importantes que debes de recordar de este plugin son: Guardar sesión <Prefijo> + Ctrl + s
y para restaurarlas <Prefijo> + Ctrl + r
.
Más información: https://github.com/tmux-plugins/tmux-resurrect
Tmux yank
Provee a Tmux de la capacidad de compartir el portapaleles con el sistema operativo. Ten en cuenta que vas a necesitas de librerías adicionales de acuerdo a tu sistema operativo. Después con <Prefijo> + y
, tendrás la habilidad de copiar el contenido seleccionado en la terminal y pegarlo donde quieras.
Puedes leer más al respecto acá: https://github.com/tmux-plugins/tmux-yank
Vim Tmux Navigator
Si eres un usuario de Vim, como yo, querrás tener un flujo sencillo para moverte entre tus paneles y divisiones de Vim. Por defecto, no funcionará como esperarías. Por suerte, tenemos este plugin que necesita ser instalado en Vim y Tmux, y ambos se complementarán perfectamente. También funciona con Nvim.
Puedes seguir las instrucciones aquí: https://github.com/christoomey/vim-tmux-navigator
Todos los plugins en un sólo bloque de código
Aquí está la lista de todos los plugins, ponlos después de la línea set -g @plugin 'tmux-plugins/tpm'
. Guárdalo, recarga tu configuración, y después presiona <Prefijo> + I
para instalarlos. Si quieres actualizarlos después de cierto tiempo, usa <Prefijo> + U
.
Instalando temas
Como otras herramientas de desarrollo, puedes configurar tu interfaz de Tmux con temas. Voy a mostrarte mi tema preferido. Adicionalmente voy a dejar un link al final donde puedes acceder a una gran variedad de temas.
Tema de Dracula
Es un tema agradable a la vista que se complementa con terminales claras y oscuras. Lo he probado en ambas. La combinación de gris oscuro con verde, rosa y naranja, hacen resaltar las secciones donde veo mis recursos del sistema. Lo configuré también para mostrar mi carga de CPU, GPU y uso de RAM. Además tiene soporte para Nerdfont, que es lo que uso en mi terminal.
Para instalar este tema, sigue los mismos pasos que usas para instalar plugins.
Sobre mi configuración personalizada, así es como he configurado el tema de Dracula para acomodarse a mi uso diario. Copia y pega después de la línea después de donde instalas el plugin. Si ves cuadrados en lugar de íconos, igual puedes copiarlos también. Mientras tu terminal use Nerdfonts, los verás.
Más temas
Puedes encontrar más temas en este increíble repositorio de Tmux. .