Aller au contenu
geekus
SpécimenOutils dev·5 min de lecture

fzf : chercheur flou en ligne de commande, open source

fzf te laisse retrouver un fichier ou une commande en tapant juste quelques lettres. Un seul binaire, installable avec brew install fzf. Il brasse des millions d'éléments en quelques millisecondes.

Voir le dépôt ↗
github.com/junegunn/fzf
Capture de la page de fzf
Sommaire11 parties

fzf est un chercheur flou en ligne de commande, doublé d’une boîte à outils pour construire des interfaces de terminal. Il filtre en direct n’importe quelle liste (fichiers, historique, processus, branches git) pendant que tu tapes, même si tu omets des caractères. Il tient dans un seul binaire et s’intègre à Bash, Zsh, Fish, Nushell, Vim et Neovim.

En bref

  • Filtre en direct toute liste : fichiers, historique, processus, hôtes, commits
  • Un seul binaire, installable avec brew install fzf ou un gestionnaire de paquets
  • Intégrations pour Bash, Zsh, Fish, Nushell, Vim et Neovim
  • Aperçu, menus personnalisés et rechargement de listes via des options
  • Licence MIT, écrit surtout en Go

fzf en image (tirée de la page du projet)

Qu’est-ce que fzf et quel problème règle-t-il ?

fzf est un filtre interactif pour n’importe quelle liste. Sa documentation part d’un constat : au terminal, presque chaque commande travaille sur une liste. Ouvrir un fichier, changer de dossier, relancer une commande de l’historique, arrêter un processus, se connecter en SSH, changer de branche git ou de namespace Kubernetes.

Sans fzf, la démarche se répète : afficher la liste avec ls ou git branch, la parcourir, parfois la réduire avec grep, puis recopier le nom voulu. La complétion automatique aide, mais il faut souvent appuyer plusieurs fois sur TAB ou connaître à l’avance le nom exact. fzf a été créé pour simplifier ce geste qui revient sans cesse.

Comment fonctionne fzf

fzf lance un sélecteur interactif, lit la liste sur l’entrée standard et écrit l’élément choisi sur la sortie standard. Tu peux donc le brancher derrière n’importe quelle commande qui produit une liste. Sans entrée, il parcourt les fichiers du dossier courant.

La recherche est dite « floue » : tu peux taper un motif en omettant des caractères et obtenir quand même le résultat voulu. Le README précise que le projet est optimisé pour traiter des millions d’éléments en quelques millisecondes.

find * -type f | fzf > selected
vim $(fzf)

fzf : autre image tirée de la page du projet

Ce que sait faire fzf : syntaxe de recherche et affichage

Par défaut, fzf accepte plusieurs termes séparés par des espaces, chacun avec son type de correspondance. Un terme simple est flou, une apostrophe devant impose une correspondance exacte, ^ ancre au début, $ à la fin, et ! exclut. Une barre verticale seule joue le rôle de « ou ».

Côté affichage, fzf occupe l’écran entier par défaut. L’option --height le fait démarrer sous le curseur avec une hauteur donnée. L’option --popup ouvre une fenêtre flottante, à condition d’être sous tmux 3.3 ou plus, ou Zellij 0.44 ou plus ; elle est ignorée sans message ailleurs. Des préréglages de style (default, full, minimal) et de nombreuses options permettent de changer l’apparence.

  • 'wild : éléments contenant exactement wild
  • ^music : éléments qui commencent par music
  • .mp3$ : éléments qui finissent par .mp3
  • !fire : éléments qui ne contiennent pas fire
^core go$ | rb$ | py$
fzf --height 40% --layout reverse --border

Installer fzf et activer l’intégration au shell

Le README liste de nombreux modes d’installation : Homebrew et MacPorts, mise, les gestionnaires de paquets de nombreuses distributions Linux (par exemple sudo apt install fzf sur Debian et Ubuntu), Chocolatey, Scoop, Winget et MSYS2 sous Windows, un clonage git avec un script d’installation, ou les binaires officiels de la page des versions.

Ensuite, une ligne dans le fichier de configuration de ton shell active les raccourcis clavier et la complétion floue. Avec ces raccourcis, CTRL-T cherche des fichiers et dossiers, ALT-C des dossiers. Les options --bash, --zsh, --fish et --nushell ne sont disponibles que dans les versions récentes ; pour Nushell, le README décrit une génération manuelle d’un fichier de chargement.

brew install fzf
eval "$(fzf --bash)"
source <(fzf --zsh)
fzf --fish | source

Utiliser fzf comme menu interactif et outil d’aperçu

fzf ne se limite pas à la sélection. Il se décrit aussi comme une boîte à outils « programmable », construite autour d’événements : des liaisons de touches peuvent recharger la liste, lancer un programme externe ou afficher un aperçu du fichier sous le curseur. Le README donne des exemples comme une intégration interactive avec ripgrep ou l’aperçu d’images.

Une option permet même à fzf de se transformer en un autre processus, par exemple pour ouvrir directement l’élément choisi dans un éditeur. Les variables FZF_DEFAULT_COMMAND, FZF_DEFAULT_OPTS et FZF_DEFAULT_OPTS_FILE servent à fixer la source de la liste et les options par défaut.

fzf --bind 'enter:become(vim {})'

Où en est le projet fzf

Le dépôt a été créé le 23 octobre 2013. Au 11 octobre 2026, il compte 83 548 étoiles, 5 071 forks et 338 contributeurs, avec 332 tickets et demandes de fusion ouverts. Le code est écrit à 65 % en Go, le reste en Ruby, Shell et Vim Script.

La dernière version, la 0.74.5, date du 11 octobre 2026. Elle corrige notamment --popup sous tmux 3.8 ou plus et deux failles de sécurité, dans fzf-tmux et dans la complétion zsh. La 0.74.3 (17 août 2026) annonce des recherches jusqu’à 16 fois plus rapides sur des requêtes ASCII, et jusqu’à 12 fois pour les requêtes non ASCII. La 0.74.4 (12 septembre 2026) fait ouvrir fzf dans un panneau flottant tmux ou Zellij depuis Vim, sans bloquer l’éditeur.

Ce qu’il faut savoir avant d’utiliser fzf

fzf est distribué sous licence MIT. Le plugin Vim s’installe avec vim-plug, et les commandes supplémentaires viennent d’un projet distinct, fzf.vim. Pour Neovim, le README signale aussi fzf-lua, un plugin en Lua.

Le README ne donne pas de configuration minimale. Il précise en revanche que les exemples du wiki sont maintenus par la communauté et pas testés à fond.

Quelques repères

  • Entrée standard : Flux par lequel un programme reçoit des données, par exemple le résultat d’une autre commande branchée avec une barre verticale. La sortie standard est son équivalent pour envoyer le résultat.
  • Recherche floue : Méthode de recherche qui accepte un motif où des caractères manquent ou sont espacés, et classe les éléments qui s’en approchent le mieux.

Questions fréquentes

fzf est-il gratuit et open source ?

Oui, fzf est distribué sous licence MIT. Son code est public sur GitHub.

Comment installer fzf ?

Avec Homebrew, la commande est brew install fzf. Le README propose aussi des paquets pour de nombreuses distributions Linux, Windows (Chocolatey, Scoop, Winget, MSYS2), un clonage git et des binaires officiels.

fzf fonctionne-t-il avec Zsh, Fish et Vim ?

Oui. fzf propose des intégrations pour Bash, Zsh, Fish, Nushell, Vim et Neovim, activées par une ligne dans la configuration du shell ou un plugin.

Que fait la recherche floue de fzf ?

Elle te laisse taper un motif en omettant des caractères tout en retrouvant l’élément voulu. fzf accepte aussi des termes exacts, des débuts ou fins de mot et des exclusions.

À retenir

fzf transforme n’importe quelle liste du terminal en menu filtrable en direct, avec une intégration aux principaux shells et à Vim. Le projet est actif : sa version 0.74.5 date du 11 octobre 2026.

Sources

terminalclirecherche flouegoshell
Dans le même genre

Des fiches proches.

toute la famille
À lire aussi

Les dernières fiches.

tout l'annuaire

Le Carnet de Geekus · chaque vendredi

Les trouvailles de la semaine, dans ta boîte mail.

Un email, cinq minutes de lecture. En français, gratuit, sans publicité.

S'inscrire au Carnet →
  1. Le spécimen de la semaine, expliqué à fond
  2. L'actu IA en bref
  3. Les autres trouvailles et le mot de la semaine