En este post comparto una configuración simple pero muy útil para trabajar más cómodo en WSL/Linux desde la terminal.
La idea es tener tres mejoras principales:
-
Ctrl + Rpara buscar comandos anteriores. -
Ctrl + Fpara buscar archivos y abrirlos conbat. -
git diffmejorado condelta.
Herramientas que vamos a usar
Instalamos algunas herramientas modernas para la terminal:
sudo apt update
sudo apt install -y fzf fd-find bat git-delta
En Ubuntu/WSL, algunos comandos se instalan con nombres distintos:
mkdir -p ~/.local/bin
# fd se instala como fdfind
ln -sf $(which fdfind) ~/.local/bin/fd
# bat se instala como batcat
ln -sf $(which batcat) ~/.local/bin/bat
Aseguramos que ~/.local/bin esté en el PATH:
echo 'export PATH="$HOME/.local/bin:$PATH"' >> ~/.bashrc
source ~/.bashrc
Comprobamos:
fd --version
bat --version
fzf --version
delta --version
1. Buscar comandos anteriores con Ctrl + R
Una de las funciones más útiles de fzf es mejorar el historial de comandos.
Normalmente, Ctrl + R busca comandos anteriores de forma básica. Con fzf, se convierte en un buscador interactivo.
Para activarlo, añade esto a tu ~/.bashrc:
# =========================
# FZF KEY BINDINGS
# =========================
if [ -f /usr/share/doc/fzf/examples/key-bindings.bash ]; then
source /usr/share/doc/fzf/examples/key-bindings.bash
fi
Luego recarga la terminal:
source ~/.bashrc
Ahora puedes pulsar:
Ctrl + R
Y buscar comandos antiguos escribiendo parte del comando.
Ejemplos:
docker
git commit
ssh
npm install
terraform plan
Esto es muy útil cuando sabes que ya ejecutaste un comando, pero no recuerdas exactamente cómo era.
2. Buscar archivos con Ctrl + F y abrirlos con bat
Otra mejora muy práctica es usar Ctrl + F para buscar archivos dentro del proyecto actual usando fd + fzf, con preview usando bat.
El flujo queda así:
Ctrl + F → buscar archivo → Enter → abrir archivo con bat
Añade este bloque al final de tu ~/.bashrc:
# =========================
# FZF CUSTOM SHORTCUTS
# =========================
# Ctrl + F: buscar archivo con fzf y abrirlo con bat
bind -x '"\C-f": selected=$(fd -t f | fzf --preview "bat --color=always --line-range :200 {}"); [ -n "$selected" ] && bat "$selected"'
# Alias: buscar archivo con preview y abrirlo con bat
alias ff='selected=$(fd -t f | fzf --preview "bat --color=always --line-range :200 {}"); [ -n "$selected" ] && bat "$selected"'
# Alias: buscar archivo con preview y devolver la ruta
alias fp='fd -t f | fzf --preview "bat --color=always --line-range :200 {}"'
# =========================
# END FZF CUSTOM SHORTCUTS
# =========================
Recarga:
source ~/.bashrc
Uso:
Ctrl + F
O también:
ff
Esto abre un buscador interactivo de archivos. Mientras navegas por los resultados, ves una vista previa del contenido gracias a bat.
También puedes usar:
fp
Este comando solo devuelve la ruta del archivo seleccionado.
¿Qué hace cada herramienta?
fd
fd es una alternativa moderna a find.
Ejemplo:
fd README
fd main
fd ".py$"
Buscar solo archivos:
fd -t f
Buscar solo carpetas:
fd -t d
fzf
fzf permite buscar de forma interactiva en listas.
Ejemplo básico:
fd -t f | fzf
Esto lista archivos y permite elegir uno escribiendo parte del nombre.
bat
bat es como cat, pero mejorado:
bat README.md
Incluye resaltado de sintaxis, número de líneas y mejor lectura.
En nuestro caso lo usamos también como preview dentro de fzf:
fzf --preview "bat --color=always --line-range :200 {}"
3. Mejorar git diff con delta
delta mejora mucho la salida de git diff.
En vez de ver un diff plano, puedes tener:
- Mejor resaltado.
- Comparación lado a lado.
- Colores más claros.
- Mejor lectura de cambios grandes.
Instalación:
sudo apt install -y git-delta
Configuración recomendada:
git config --global core.pager "delta"
git config --global interactive.diffFilter "delta --color-only"
git config --global delta.navigate true
git config --global delta.side-by-side true
git config --global merge.conflictstyle diff3
git config --global diff.colorMoved default
Ahora simplemente ejecuta:
git diff
Y verás una salida mucho más cómoda.
Para ver cambios staged:
git diff --staged
Puedes añadir estos alias a tu ~/.bashrc:
# =========================
# GIT ALIASES
# =========================
alias gs='git status'
alias gd='git diff'
alias gds='git diff --staged'
alias gl='git log --oneline --graph --decorate --all'
Recarga:
source ~/.bashrc
Uso:
gs
gd
gds
gl
Configuración completa para copiar y pegar
Este sería un bloque final para añadir al ~/.bashrc:
# =========================
# CUSTOM TERMINAL SETUP
# =========================
# Local binaries
export PATH="$HOME/.local/bin:$PATH"
# FZF key bindings: Ctrl + R
if [ -f /usr/share/doc/fzf/examples/key-bindings.bash ]; then
source /usr/share/doc/fzf/examples/key-bindings.bash
fi
# Ctrl + F: buscar archivo con fzf y abrirlo con bat
bind -x '"\C-f": selected=$(fd -t f | fzf --preview "bat --color=always --line-range :200 {}"); [ -n "$selected" ] && bat "$selected"'
# Buscar archivo con preview y abrirlo con bat
alias ff='selected=$(fd -t f | fzf --preview "bat --color=always --line-range :200 {}"); [ -n "$selected" ] && bat "$selected"'
# Buscar archivo con preview y devolver la ruta
alias fp='fd -t f | fzf --preview "bat --color=always --line-range :200 {}"'
# Git aliases
alias gs='git status'
alias gd='git diff'
alias gds='git diff --staged'
alias gl='git log --oneline --graph --decorate --all'
# =========================
# END CUSTOM TERMINAL SETUP
# =========================
Y para configurar delta:
git config --global core.pager "delta"
git config --global interactive.diffFilter "delta --color-only"
git config --global delta.navigate true
git config --global delta.side-by-side true
git config --global merge.conflictstyle diff3
git config --global diff.colorMoved default
Resumen
Después de esta configuración, el flujo de trabajo queda mucho más cómodo:
Ctrl + R → buscar comandos anteriores
Ctrl + F → buscar archivos y abrirlos con bat
ff → buscar archivo y abrirlo con bat
fp → buscar archivo y obtener la ruta
gd → ver git diff con delta
gds → ver git diff staged
gs → ver git status
Es una configuración pequeña, pero mejora bastante el día a día trabajando desde la terminal en WSL.
Top comments (0)