Saltar al contenido principal

Por qué me gusta tanto FZF

Uso mucho la Terminal 🚧, tanto que incluso programo en la propia terminal usando Vim. El caso es que recientemente he cambiado el plugin que usaba para buscar ficheros mediante fuzzy find (el mítico Control + P de otros editores), en concreto a una que se llama FZF, y ha sido ahí cuando he descubierto esta poderosa herramienta.

Si no sabes lo que es fuzzy find te lo explico rápidamente. Un buscador si fuzzy find usa el término de búsqueda de forma completa, tiene que estar todos los caracteres de búsqueda pegados. En cambio un buscador fuzzy find permite que haya espacios o otras letras entre cada carácter de búsqueda.

Pongamos un ejemplo de fuzzy find, si quiero buscar por ejemplo el fichero /proyectos/coding-potions/src/bussiness/main.js simplemente puedo escribir en el buscador copobusmain, así, todo junto, el fuzzy find se encargará de pillar el inicio de cada palabra y hacer el match, así no tienes que escribir tanto.

Pues bien, el caso es que al instalar FZF me he leído su repo y me he dado cuenta de que se puede utilizar para muchas otras cosas fuera de Vim.

Ya al instalar FZF (lo he instalado mediante git y su ejecutable instalador) me ha preguntado si quería añadir los keybindings y el plugin para zsh, le he dado a todo que sí. Antiguamente lo instalé mediante el gestor de paquetes de mi distro Linux y claro ahí no me preguntó lo de añadir los keybindings y me lo perdí.

Una vez instalado ya te da algo muy guapo sin que tengas que hacer nada, y es modificarte el comando de Control + R para buscar comandos ejecutados para que tire de FZF. Eso ya mola mucho porque puedes ver más de un comando y encima te deja buscar escribiendo con fuzzy find, qué más se puede pedir.

Animación del funcionamiento de FZF para el comando de Control + R

FZF también te da el comando fzf que si lo ejecutas verás que puedes buscar ficheros, lo que pasa es que al darle al Enter no hace nada, solo te sale el nombre del fichero en la pantalla. Pero es que este comando lo puedes combinar con otros, por ejemplo puedes hacer nano $(fzf) o code $(fzf) si te gusta más el Vscode 🚧.

Animación del funcionamiento del comando de fzf con vi

Pero eso no es todo, si has instalado los keybings ahora tienes algo que me parece brutal, y es que en cualquier comando puedes escribir literalmente dos asteriscos ** y darle al Tab, eso lo que hará será abrir el FZF para buscar ficheros y sustituir el nombre del fichero en el que pulses el Enter en el sitio en el que hayas metido los asteriscos.

Esto de los asteriscos lo uso muchísimo, por ejemplo cuando quiero ejecutar solo los tests de un fichero con jest pues escribo jest ** y le doy al tab. Sí, ya sé que Jest 🚧 tiene una opción para ejecutar solo un fichero, pero como nunca lo recuerdo pues tiro de FZF y listo.

Pero cuidado porque esto de fzf lo pudes usar para tus propios comandos, es decir, puedes coger la salida de un comando en forma de lista y pasársela a fzf para que te saque el selector con buscador, por ejemplo un find con fzf: find ./ '*.js' | fzf

Y estoy seguro de que tiene más cosas, pero no me he puesto a mirar FZF en profundidad, pero ya ves que con este par de cosas ya merece mucho la pena.

Te animo a probarlo por ti mismo y ver qué tal, yo desde que la uso no puedo vivir sin esta herramienta.