# Aprovecha Linux al máximo: herramientas esenciales para mejorar tu flujo de trabajo

Tabla de contenidos

Introducción

Después de varios años usando Linux, estas son las herramientas que más uso en mi día a día. Gestores de configuración, shells con autocompletado, herramientas de búsqueda y varias utilidades de terminal que me han ahorrado bastante tiempo.

Gestión de Configuración

1. YADM - Yet Another Dotfiles Manager

YADM (Yet Another Dotfiles Manager) es un gestor de archivos de configuración (dotfiles). Funciona creando un repositorio Git directamente en tu directorio home, lo que te permite versionar y sincronizar tu configuración entre múltiples máquinas.

Ventajas principales:

  • Simplicidad: No necesitas scripts complejos ni enlaces simbólicos
  • Flexibilidad: Soporte para plantillas y configuraciones específicas por sistema
  • Bootstrap: Ejecuta scripts de configuración automáticamente al clonar
  • Encriptación: Protege archivos sensibles con GnuPG, OpenSSL, transcrypt, o git-crypt.

Caso de uso práctico: Imagina que configuras una nueva máquina. Con YADM, simplemente ejecutas:

Terminal window
yadm clone https://github.com/tu-usuario/dotfiles.git
yadm bootstrap

Y automáticamente tendrás toda tu configuración personalizada: aliases de Zsh, configuración de Neovim, temas de terminal, y cualquier software adicional que necesites instalado.

La opción bootstrap de YADM te permite ejecutar un script en caso de que tu configuración necesite pasos adicionales como descargar recursos externos (evitando subir binarios grandes a tu repositorio).

Shell y Terminal

2. ZSH - Z Shell

ZSH

Zsh es un shell que extiende Bash con varias características útiles: mejor autocompletado, historial compartido entre sesiones, corrección de typos y patrones de búsqueda más potentes.

Características destacadas:

  • Autocompletado inteligente: Completa comandos, rutas y opciones
  • Historial compartido: Sincroniza el historial entre sesiones
  • Expansiones potentes: !$ (último argumento), !! (último comando)
  • Corrección ortográfica: Sugiere correcciones para comandos mal escritos
  • Globbing avanzado: Patrones de búsqueda más sofisticados

Ejemplos prácticos:

Terminal window
# Acceder al último argumento del comando anterior
ls /path/to/file.txt
vim !$ # Equivale a: vim /path/to/file.txt
# Repetir el último comando con sudo
sudo !!
# Globbing avanzado - archivos modificados en los últimos 7 días
ls -la *(.m-7)

A diferencia de Fish, Zsh es compatible con la sintaxis de Bash, así que tus scripts existentes siguen funcionando sin cambios.

2.1. Oh My Zsh - Framework de Configuración

Oh My Zsh

Oh My Zsh es un framework con más de 300 plugins y 150 temas para Zsh. Facilita bastante la configuración y personalización del shell.

Instalación rápida:

Terminal window
sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"

2.2. Plugins Esenciales

A continuación, te presento una lista de plugins esenciales que uso con Oh My Zsh:

Plugin Git

Agrega aliases para los comandos más comunes de Git:

Aliases más útiles:

  • gssgit status --short
  • gcmsggit commit --message
  • gaagit add --all
  • gpgit push
  • glgit pull
  • gcogit checkout
  • gcbgit checkout -b
Terminal window
local -a exclude_aliases=('grep')
for alias_name in ${(ok)aliases}; do
if (( ${exclude_aliases[(Ie)$alias_name]} )); then
continue
fi
if [[ "$alias_name" == g* || "$alias_name" == y* ]]; then
local original_command="${aliases[$alias_name]}"
unalias "$alias_name"
functions[$alias_name]="
print -P \"\n%F{yellow}\ueeed %F{green}${(q)original_command}%f\n\"
command ${(z)original_command} \"\$@\"
"
fi
done

Esta función, incluida en mi archivo de aliases (.config/zsh/.zsh_aliases), muestra el comando original cuando ejecuto un alias de git o yadm, proporcionando transparencia y ayudando a recordar los comandos subyacentes.

omz-git
Plugin FZF - Búsqueda Inteligente

FZF (Fuzzy Finder) es una herramienta de búsqueda difusa que se integra con Zsh para buscar en el historial de comandos y navegar archivos de forma interactiva.

Funcionalidades principales:

  • Historial inteligente: Ctrl + R para buscar comandos anteriores
  • Navegación de archivos: Ctrl + T para insertar rutas de archivos
  • Cambio de directorio: Alt + C para navegar a directorios
  • Búsqueda difusa: Encuentra elementos aunque no recuerdes el nombre exacto
omz-fzf
Plugin Autosuggestions - Predicción Inteligente

Este plugin sugiere comandos basados en tu historial mientras escribes en la terminal.

Funcionalidades:

  • Sugerencias en tiempo real: Aparecen mientras escribes
  • Basado en historial: Aprende de tus comandos anteriores
  • Aceptación parcial: Ctrl + → para aceptar palabra por palabra
  • Aceptación completa: para aceptar toda la sugerencia

Instalación:

Terminal window
git clone https://github.com/zsh-users/zsh-autosuggestions ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-autosuggestions
Plugin Syntax Highlighting - Retroalimentación Visual

Este plugin proporciona resaltado de sintaxis en tiempo real para tus comandos, ayudándote a identificar errores antes de ejecutarlos.

Beneficios:

  • Validación inmediata: Comandos válidos en verde, inválidos en rojo
  • Detección de errores: Identifica typos y comandos inexistentes
  • Resaltado de rutas: Diferencia entre archivos existentes y no existentes
  • Sintaxis de argumentos: Resalta opciones y parámetros

Instalación:

Terminal window
git clone https://github.com/zsh-users/zsh-syntax-highlighting.git ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-syntax-highlighting

2.3. Plugins Adicionales de Productividad

BGNotify: Recibe notificaciones cuando comandos de larga duración terminan de ejecutarse. Especialmente útil para compilaciones o descargas.

Sudo: Añade sudo al comando actual presionando Esc dos veces. Perfecto para esos momentos cuando olvidas los permisos de administrador.

Herramientas de Navegación

3. Zoxide - Navegación Inteligente de Directorios

zoxide

Zoxide reemplaza al comando cd. Aprende de los directorios que más visitas y te permite saltar a ellos con comandos cortos.

Cómo funciona:

  • Aprendizaje automático: Registra los directorios que visitas
  • Búsqueda difusa: Encuentra directorios con coincidencias parciales
  • Algoritmo de frecuencia: Prioriza directorios más utilizados
  • Integración universal: Compatible con cualquier shell

Ejemplos prácticos:

Terminal window
# En lugar de: cd /home/usuario/proyectos/mi-app/frontend
z frontend
# En lugar de: cd /var/log/nginx
z nginx
# En lugar de: cd ~/Documents/trabajo/cliente-importante
z cliente

Instalación:

Terminal window
# Arch Linux
sudo pacman -S zoxide
# Ubuntu/Debian
curl -sS https://raw.githubusercontent.com/ajeetdsouza/zoxide/main/install.sh | bash
# Añadir a ~/.zshrc
eval "$(zoxide init zsh)"

Herramientas de Desarrollo

4. Scrcpy - Control de Dispositivos Android

Scrcpy es una aplicación que permite mostrar y controlar dispositivos Android conectados por USB o de forma inalámbrica. Es especialmente útil para desarrolladores de aplicaciones móviles, testing, y presentaciones.

Características destacadas:

  • Sin instalación en el dispositivo: No requiere apps adicionales
  • Alto rendimiento: Baja latencia y buena calidad de imagen
  • Control completo: Teclado, mouse, gestos táctiles
  • Grabación: Captura video de la pantalla del dispositivo
  • Conexión inalámbrica: Funciona por Wi-Fi después de setup inicial

Casos de uso prácticos:

  • Desarrollo: Testing de apps sin cambiar de pantalla
  • Presentaciones: Mostrar apps móviles en pantalla grande
  • Soporte técnico: Ayudar a usuarios remotamente
  • Documentación: Crear tutoriales y screenshots

Instalación y uso:

Terminal window
# Arch Linux
sudo pacman -S scrcpy
# Ubuntu/Debian
sudo apt install scrcpy
# Uso básico (dispositivo conectado por USB)
scrcpy
# Grabar sesión
scrcpy --record archivo.mp4

5. Ripgrep - Búsqueda de Texto Ultrarrápida

Ripgrep

Ripgrep (rg) es un reemplazo de grep bastante más rápido y con mejor output. Está pensado para buscar en código fuente y respeta automáticamente los archivos .gitignore.

Ventajas sobre grep tradicional:

  • Velocidad: Hasta 10x más rápido en proyectos grandes
  • Inteligencia: Ignora archivos binarios y directorios de dependencias
  • Sintaxis mejorada: Soporte para regex Rust más potentes
  • Salida colorida: Resaltado automático de resultados

Ejemplos de uso:

Terminal window
# Búsqueda básica
rg "function" src/
# Búsqueda con contexto
rg -C 3 "error" logs/
# Búsqueda por tipo de archivo
rg -t js "import"
# Búsqueda excluyendo directorios
rg "TODO" --glob '!node_modules'

Interfaces de Usuario para Terminal

6. Lazygit - Git con Interfaz Visual

Lazygit

Lazygit es una interfaz de terminal para Git. Útil para staging interactivo, resolución de conflictos y navegación del historial de commits.

Funcionalidades principales:

  • Navegación visual: Explora commits, branches y archivos con teclas
  • Staging interactivo: Selecciona cambios línea por línea
  • Resolución de conflictos: Interfaz visual para merge conflicts
  • Historial completo: Navega por el árbol de commits fácilmente

7. Lazydocker - Gestión Visual de Docker

Lazydocker

Lazydocker proporciona una interfaz de terminal para gestionar contenedores, imágenes y volúmenes de Docker sin comandos complejos.

Características:

  • Vista unificada: Contenedores, imágenes, redes en una sola pantalla
  • Logs en tiempo real: Monitorea salida de contenedores
  • Gestión completa: Crear, parar, eliminar recursos fácilmente
  • Estadísticas: Uso de CPU y memoria en tiempo real

8. Btop - Monitor de Sistema Moderno

Btop

Btop es un monitor de recursos del sistema que reemplaza a htop con una interfaz más moderna y funcionalidades avanzadas.

Mejoras sobre htop:

  • Interfaz moderna: Diseño limpio con temática personalizable
  • Métricas detalladas: CPU, memoria, red, disco en tiempo real
  • Gráficos históricos: Visualiza tendencias de uso
  • Filtración avanzada: Busca y filtra procesos eficientemente

Editores y Entornos de Desarrollo

9. LazyVim - Neovim Preconfigurado

LazyVim es una distribución de Neovim que proporciona una configuración moderna y completa sin la complejidad de configurar todo desde cero.

Ventajas:

  • Configuración instantánea: LSP, autocompletado, syntax highlighting
  • Gestión de plugins: Sistema modular y eficiente
  • Teclas intuitivas: Atajos bien diseñados para productividad
  • Extensible: Fácil personalización y adición de plugins

Mi configuración personal:

-- sincroniza el portapapeles de vim con el del sistema
vim.opt.clipboard = "unnamedplus"
-- línea de separación
vim.opt.colorcolumn = "80"

Conclusión

Estas son las herramientas que más uso en mi día a día con Linux. Mi recomendación si quieres probarlas: adoptalas de a poco.

  1. Lo básico: YADM para tus dotfiles, Zsh con Oh My Zsh
  2. Navegación: Zoxide y FZF para moverte más rápido
  3. Interfaces visuales: Lazygit, Btop para tareas que se vuelven complicadas por línea de comandos
  4. Búsquedas: Ripgrep para encontrar código rápido

No hace falta instalar todo de golpe. Probá una o dos, dale un par de semanas, y si te sirven seguí sumando.

Recomendaciones

Si te interesa una configuración completa y lista para usar, considera probar Omarchy, que incluye varias de estas herramientas preconfiguradas y optimizadas.

My avatar

¡Gracias por leer!


More Posts