DEV Community

Cover image for Mejorando mi terminal WSL con FZF, BAT, FD y Delta
Coles C
Coles C

Posted on

Mejorando mi terminal WSL con FZF, BAT, FD y Delta

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:

  1. Ctrl + R para buscar comandos anteriores.
  2. Ctrl + F para buscar archivos y abrirlos con bat.
  3. git diff mejorado con delta.

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
Enter fullscreen mode Exit fullscreen mode

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
Enter fullscreen mode Exit fullscreen mode

Aseguramos que ~/.local/bin esté en el PATH:

echo 'export PATH="$HOME/.local/bin:$PATH"' >> ~/.bashrc
source ~/.bashrc
Enter fullscreen mode Exit fullscreen mode

Comprobamos:

fd --version
bat --version
fzf --version
delta --version
Enter fullscreen mode Exit fullscreen mode

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
Enter fullscreen mode Exit fullscreen mode

Luego recarga la terminal:

source ~/.bashrc
Enter fullscreen mode Exit fullscreen mode

Ahora puedes pulsar:

Ctrl + R
Enter fullscreen mode Exit fullscreen mode

Y buscar comandos antiguos escribiendo parte del comando.

Ejemplos:

docker
git commit
ssh
npm install
terraform plan
Enter fullscreen mode Exit fullscreen mode

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
Enter fullscreen mode Exit fullscreen mode

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
# =========================
Enter fullscreen mode Exit fullscreen mode

Recarga:

source ~/.bashrc
Enter fullscreen mode Exit fullscreen mode

Uso:

Ctrl + F
Enter fullscreen mode Exit fullscreen mode

O también:

ff
Enter fullscreen mode Exit fullscreen mode

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
Enter fullscreen mode Exit fullscreen mode

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$"
Enter fullscreen mode Exit fullscreen mode

Buscar solo archivos:

fd -t f
Enter fullscreen mode Exit fullscreen mode

Buscar solo carpetas:

fd -t d
Enter fullscreen mode Exit fullscreen mode

fzf

fzf permite buscar de forma interactiva en listas.

Ejemplo básico:

fd -t f | fzf
Enter fullscreen mode Exit fullscreen mode

Esto lista archivos y permite elegir uno escribiendo parte del nombre.


bat

bat es como cat, pero mejorado:

bat README.md
Enter fullscreen mode Exit fullscreen mode

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 {}"
Enter fullscreen mode Exit fullscreen mode

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
Enter fullscreen mode Exit fullscreen mode

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
Enter fullscreen mode Exit fullscreen mode

Ahora simplemente ejecuta:

git diff
Enter fullscreen mode Exit fullscreen mode

Y verás una salida mucho más cómoda.

Para ver cambios staged:

git diff --staged
Enter fullscreen mode Exit fullscreen mode

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'
Enter fullscreen mode Exit fullscreen mode

Recarga:

source ~/.bashrc
Enter fullscreen mode Exit fullscreen mode

Uso:

gs
gd
gds
gl
Enter fullscreen mode Exit fullscreen mode

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
# =========================
Enter fullscreen mode Exit fullscreen mode

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
Enter fullscreen mode Exit fullscreen mode

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
Enter fullscreen mode Exit fullscreen mode

Es una configuración pequeña, pero mejora bastante el día a día trabajando desde la terminal en WSL.

Top comments (0)