El ecosistema de la línea de comandos (CLI) ha experimentado una revolución silenciosa. Herramientas escritas en Rust y Go han reemplazado a binarios de Unix con décadas de antigüedad, añadiendo colores, resaltado de sintaxis, búsqueda difusa (fuzzy search) e integración con Git casi sin sacrificar velocidad. Estas son las que uso a diario.
Tabla de contenidos
Open Tabla de contenidos
Shell: Zsh + Starship
Starship es, sin duda, el prompt que más mejora la experiencia con el menor esfuerzo. Funciona con cualquier shell, es increíblemente rápido (escrito en Rust) y muestra el contexto relevante: rama de Git, versión de Node/Python/Rust, estado del último comando.
# Estilo minimalista pero informativo
format = """
$directory\
$git_branch\
$git_status\
$nodejs\
$rust\
$python\
$cmd_duration\
$line_break\
$character"""
[git_branch]
symbol = " "
style = "bold purple"
[git_status]
conflicted = "⚔️ "
ahead = "⇡${count}"
behind = "⇣${count}"
modified = "✎${count}"
untracked = "?${count}"
[cmd_duration]
min_time = 2_000
format = "tardó [$duration](bold yellow)"~/.config/starship.toml
Reemplazos de herramientas clásicas
ls → eza (antes exa)
eza --tree --level=2 --icons --git # árbol con iconos y estado de Git
eza -la --sort=modified # lista larga, ordenada por fecha
find → fd
# find: verboso y con mala ergonomía
find . -name "*.ts" -not -path "*/node_modules/*"
# fd: intuitivo, respeta .gitignore por defecto
fd -e ts # todos los .ts del proyecto
fd -e ts --exec bat {} # abre cada resultado con bat
grep → ripgrep (rg)
# grep clásico
grep -r "useEffect" src/ --include="*.tsx"
# rg: 5-10 veces más rápido, respeta .gitignore
rg "useEffect" --type ts
rg "TODO|FIXME|HACK" --type ts --stats
rg "deprecated" -l # solo nombres de archivo
cat → bat
bat es cat con resaltado de sintaxis, números de línea, paginación y diff de Git integrado:
bat src/components/Header.astro # con colores y líneas
bat --diff file.ts # muestra cambios de Git inline
cd → zoxide
Aprende qué directorios visitas con frecuencia y te permite saltar a ellos con unas pocas letras:
z astro # salta a ~/proyectos/mi-blog-astro si es el más visitado
z blog src # coincidencia múltiple
zi # modo interactivo con fzf
Multiplexor: tmux con config moderna
# Prefijo más cómodo
set -g prefix C-a
unbind C-b
# Dividir paneles con teclas intuitivas
bind | split-window -h -c "#{pane_current_path}"
bind - split-window -v -c "#{pane_current_path}"
# Navegación con Alt+flechas (sin prefijo)
bind -n M-Left select-pane -L
bind -n M-Right select-pane -R
bind -n M-Up select-pane -U
bind -n M-Down select-pane -D
# Ratón habilitado
set -g mouse on
# 256 colores
set -g default-terminal "tmux-256color"~/.tmux.conf
Fuzzy finder: fzf — el multiplicador de todo
fzf convierte cualquier lista en un buscador interactivo. Solo añade | fzf a cualquier comando.
# Buscar en el historial de comandos
CTRL+R con fzf integrado
# Checkout de rama con preview
git branch | fzf --preview 'git log --oneline {}' | xargs git checkout
# Matar procesos
ps aux | fzf --multi | awk '{print $2}' | xargs kill
# Buscar y abrir archivo
fd -e ts | fzf --preview 'bat --color=always {}' | xargs nvim
Git moderno: lazygit
Una TUI (Terminal UI) para Git que hace obvio lo que está pasando en tu repositorio:
lazygit # abre la interfaz
Funciones destacadas:
- Ver diffs por archivo y por línea
- Stage selectivo (líneas individuales, no solo archivos)
- Resolver conflictos visualmente
- Rebase interactivo con drag & drop
Mi .zshrc básico optimizado
# Carga rápida con lazy loading
export PATH="$HOME/.cargo/bin:$HOME/.local/bin:$PATH"
# Aliases modernos
alias ls='eza --icons'
alias ll='eza -la --icons --git'
alias tree='eza --tree --icons'
alias cat='bat'
alias find='fd'
alias grep='rg'
alias lg='lazygit'
# integración con fzf
source <(fzf --zsh)
# zoxide
eval "$(zoxide init zsh)"
# starship
eval "$(starship init zsh)"~/.zshrc
La mejor inversión de tiempo en productividad en la terminal no es aprender nuevas herramientas, sino dominar las que ya tienes. Pero cuando una herramienta moderna hace lo mismo 5 veces más rápido y con mejor experiencia de desarrollo (DX), el cambio se amortiza solo en la primera semana.
Traducido del original (Andrés Ujpán)