fzf Cheatsheet

0.57

Búsqueda difusa de todo — archivos, historial, procesos y más

Español: 2026-03-29

fzf es un buscador difuso para tu terminal, y una vez que empieces a usarlo, te preguntarás cómo sobrevivías sin él. Canaliza cualquier cosa hacia él — listas de archivos, ramas de git, IDs de procesos, variables de entorno, literalmente cualquier entrada basada en líneas — y fzf te da una interfaz de búsqueda instantánea, interactiva y tolerante a errores tipográficos. Transforma "desplazarte por 400 líneas de salida entrecerrando los ojos en cada una" en "escribe tres caracteres y ya estás ahí."

La belleza de fzf es que es un filtro Unix. Lee líneas de stdin, te deja elegir una (o varias), y escribe tu selección a stdout. Eso es todo. Ese contrato simple significa que se conecta con todo. Combínalo con find, rg, git, ps, docker, o cualquier cosa que produzca texto, y tienes un selector interactivo gratis. Es la cinta adhesiva de los flujos de trabajo en terminal — excepto que en realidad es elegante.

Este cheatsheet se enfoca en los patrones que usarás constantemente: los comandos básicos, las integraciones de shell que cambiarán cómo navegas tu sistema de archivos, la ventana de previsualización que hace que las selecciones se sientan de lujo, y las recetas del mundo real que convierten a fzf de "juguete interesante" en "infraestructura esencial." Si solo aprendes tres cosas aquí, que sean Ctrl-R, Ctrl-T y la flag --preview. Todo lo demás es bonus.

Uso Básico

Los fundamentos. La mayoría de la gente empieza aquí y nunca se da cuenta de lo profundo que llega.

Uso Básico
fzf
Lanzar fzf con una lista recursiva de archivos desde el directorio actual
<cmd> | fzf
Canalizar la salida de cualquier comando a fzf para filtrado interactivo
fzf --query "str"
Iniciar con una consulta de búsqueda pre-llenada
fzf --filter "str"
Modo no interactivo — imprime coincidencias a stdout y sale
fzf --select-1
Auto-seleccionar si solo hay una coincidencia
fzf --exit-0
Salir inmediatamente si no hay coincidencias
fzf -m
Habilitar modo de selección múltiple (Tab para alternar selecciones)
fzf --height 40%
Abrir fzf en línea en lugar de pantalla completa
fzf --reverse
Mostrar la lista de arriba hacia abajo en lugar de abajo hacia arriba
fzf --exact
Desactivar búsqueda difusa — solo mostrar coincidencias exactas de subcadena

Sintaxis de Búsqueda

El lenguaje de búsqueda de fzf es pequeño pero sorprendentemente potente. Puedes combinar estos tokens en una sola consulta.

Sintaxis de Búsqueda
sbtrkt
Coincidencia difusa — los caracteres deben aparecer en orden, pero no consecutivamente
'wild
Coincidencia exacta (prefijada con comilla simple)
^music
Coincidencia exacta de prefijo — debe comenzar con "music"
.mp3$
Coincidencia exacta de sufijo — debe terminar con ".mp3"
!fire
Coincidencia exacta inversa — excluir líneas que contengan "fire"
!'.mp3$
Coincidencia inversa de sufijo — excluir líneas que terminen con ".mp3"
foo | bar
Operador OR — coincidir líneas con "foo" o "bar"

Atajos de Teclado Dentro de fzf

Una vez que fzf está abierto, estas teclas controlan la navegación y selección.

Atajos de Teclado Dentro de fzf
Ctrl-j / Ctrl-n
Mover cursor hacia abajo
Ctrl-k / Ctrl-p
Mover cursor hacia arriba
Enter
Aceptar la selección actual
Tab
Alternar selección en modo de selección múltiple (-m)
Shift-Tab
Deseleccionar en modo de selección múltiple
Ctrl-a
Seleccionar todas las coincidencias (modo de selección múltiple)
Ctrl-d
Deseleccionar todo (modo de selección múltiple)
Ctrl-/
Alternar visibilidad de la ventana de previsualización
Ctrl-c / Esc
Cancelar y salir de fzf
Ctrl-l
Limpiar la consulta de búsqueda

Integraciones de Shell

Estos son los tres atajos que hacen que fzf se sienta como un superpoder. Se conectan directamente a tu shell y funcionan de inmediato después de la instalación.

Integraciones de Shell
Ctrl-R
Buscar en el historial de comandos — la mejor característica de fzf
Ctrl-T
Buscar archivos y pegar la ruta seleccionada en tu línea de comandos
Alt-C
Buscar un directorio con búsqueda difusa y entrar con cd inmediatamente
**<Tab>
Activar autocompletado con fzf (ej., vim **<Tab>, cd **<Tab>)
kill **<Tab>
Buscar un proceso con búsqueda difusa para matar vía autocompletado
ssh **<Tab>
Buscar un host desde known_hosts / config de ssh con búsqueda difusa

Ventana de Previsualización

La ventana de previsualización convierte a fzf de un selector en un navegador completo. Puedes previsualizar archivos, código con resaltado de sintaxis, imágenes, diffs de git — cualquier cosa que puedas canalizar a través de un comando.

Ventana de Previsualización
--preview "cat {}"
Mostrar contenido del archivo en un panel de previsualización
--preview "bat --color=always {}"
Previsualización con resaltado de sintaxis usando bat (el estándar de oro)
--preview-window right:60%
Colocar previsualización a la derecha, ocupando 60% del ancho
--preview-window up:50%:wrap
Colocar previsualización arriba con ajuste de línea
--preview-window hidden
Iniciar con previsualización oculta, alternar con Ctrl-/
--bind "ctrl-u:preview-half-page-up"
Vincular Ctrl-u para desplazar hacia arriba en la previsualización
--bind "ctrl-d:preview-half-page-down"
Vincular Ctrl-d para desplazar hacia abajo en la previsualización

Patrones Comunes

Estas son las recetas para copiar y pegar que hacen a fzf indispensable. Cada una resuelve un problema real que probablemente enfrentaste esta semana.

Gestión de Procesos
kill -9 $(ps aux | fzf | awk '{print $2}')
Buscar y matar un proceso con búsqueda difusa
ps aux | fzf -m | awk '{print $2}' | xargs kill
Matar múltiples procesos a la vez
Flujos de Trabajo con Git
git branch | fzf | xargs git switch
Buscar y cambiar a una rama de git con búsqueda difusa
git log --oneline | fzf --preview "git show {1}"
Explorar commits con previsualización del diff
git diff --name-only | fzf --preview "git diff {}"
Explorar archivos modificados con diff en línea
git stash list | fzf | cut -d: -f1 | xargs git stash pop
Elegir un stash para restaurar interactivamente
Docker
docker ps | fzf | awk '{print $1}' | xargs docker stop
Buscar y detener un contenedor en ejecución con búsqueda difusa
docker images | fzf | awk '{print $3}' | xargs docker rmi
Buscar y eliminar una imagen con búsqueda difusa
docker logs -f $(docker ps | fzf | awk '{print $1}')
Seguir logs de un contenedor seleccionado
Navegación de Archivos y Directorios
vim $(fzf)
Abrir un archivo encontrado con búsqueda difusa en tu editor
cd $(fd -t d | fzf)
Buscar un directorio con búsqueda difusa y entrar con cd
rg --files | fzf --preview "bat --color=always {}"
Explorar archivos del proyecto con previsualización con resaltado de sintaxis
rg -l "pattern" | fzf --preview "rg --color=always pattern {}"
Buscar archivos que coincidan con un patrón, previsualizar coincidencias en contexto

Consejos

Configura FZF_DEFAULT_COMMAND para usar fd o rg en lugar del find predeterminado. Son más rápidos, respetan .gitignore y omiten basura como node_modules automáticamente. Prueba export FZF_DEFAULT_COMMAND='fd --type f --hidden --follow --exclude .git' en tu perfil de shell.

Personaliza las integraciones de shell de forma independiente con FZF_CTRL_T_COMMAND, FZF_CTRL_R_OPTS y FZF_ALT_C_COMMAND. Por ejemplo, configura FZF_ALT_C_COMMAND='fd --type d' para que Alt-C use fd para búsqueda ultrarrápida de directorios e ignore automáticamente las entradas de .gitignore.

Pon tus opciones predeterminadas de fzf en FZF_DEFAULT_OPTS para que se apliquen en todas partes. Un buen punto de partida: export FZF_DEFAULT_OPTS='--height 40% --reverse --border --preview-window right:50%:wrap'. Esto te da un diseño compacto, de arriba hacia abajo, con un panel de previsualización en cada invocación.

Usa --bind para agregar acciones personalizadas. Por ejemplo, --bind 'ctrl-y:execute-silent(echo {} | pbcopy)' copia la selección actual a tu portapapeles sin salir de fzf. Puedes vincular cualquier tecla para ejecutar, recargar, previsualizar o cambiar el comportamiento de fzf sobre la marcha.

El comando --preview tiene acceso a marcadores de posición: {} es la línea completa, {1} es el primer campo, {q} es la consulta actual y {n} es el número de línea. Estos te permiten construir previsualizaciones sorprendentemente sofisticadas sin escribir un script wrapper.

Combina fzf con --header para dar contexto amigable a tus scripts personalizados. Algo como git branch | fzf --header "Cambiar a rama:" hace que scripts improvisados se sientan pulidos. Combínalo con --prompt para personalizar también el texto del prompt de búsqueda.

En tmux, fzf puede abrirse en un popup en lugar de en línea. Usa fzf-tmux -p 80%,60% para lanzar fzf en una ventana flotante centrada. Es elegante, no interfiere con tu panel principal y desaparece cuando terminas. Una vez que lo pruebes, fzf en línea se siente apretado.

Related Tools