Un merci spécial à :
Warp est un terminal moderne basé sur Rust avec une IA intégrée qui vous permet, à vous et à votre équipe, de créer plus rapidement d'excellents logiciels.
Visitez warp.dev pour en savoir plus.
fzf est un outil de recherche flou en ligne de commande à usage général.
C'est un programme de filtrage interactif pour tout type de liste ; fichiers, historique des commandes, processus, noms d'hôte, signets, commits git, etc. Il implémente un algorithme de correspondance "flou", de sorte que vous pouvez rapidement saisir des modèles avec des caractères omis tout en obtenant les résultats souhaités.
Portable — Distribué sous forme de binaire unique pour une installation facile
Incroyablement rapide : un code hautement optimisé traite instantanément des millions d'éléments.
Extrêmement polyvalent — Entièrement personnalisable via un mécanisme de liaison événement-action
Piles incluses — Comprend l'intégration avec bash, zsh, fish, Vim et Neovim
Je tiens à remercier tous les sponsors de ce projet qui me permettent de continuer à améliorer fzf.
Si vous souhaitez parrainer ce projet, veuillez visiter https://github.com/sponsors/junegunn.
Installation
Utiliser Homebrew
Paquets Linux
Paquets Windows
Utiliser git
Versions binaires
Configuration de l'intégration du shell
Plugin Vim/Neovim
Mise à niveau de fzf
Bâtiment fzf
Usage
--height
--tmux
Utiliser le chercheur
Modes d'affichage
Syntaxe de recherche
Variables d'environnement
Possibilités
Démo
Exemples
Raccourcis clavier pour la ligne de commande
Complétion floue pour bash et zsh
Fichiers et répertoires
ID de processus
Noms d'hôtes
Variables d'environnement / Alias
Paramètres
Commandes prises en charge
Complétion floue personnalisée
Plugin Vim
Sujets avancés
1. Mettez à jour la liste des processus en appuyant sur CTRL-R
2. Basculez entre les sources en appuyant sur CTRL-D ou CTRL-F
3. Intégration interactive de Ripgrep
Performance
Exécuter des programmes externes
Se transformer en un processus différent
Rechargement de la liste des candidats
Fenêtre d'aperçu
Aperçu d'une image
Conseils
Respecter .gitignore
Coquille de poisson
Terrain de jeu thématique fzf
Projets associés
Licence
Vous pouvez utiliser Homebrew (sur macOS ou Linux) pour installer fzf.
brasser installer fzf
Important
Pour configurer l'intégration du shell (raccourcis de touches et complétion floue), consultez les instructions ci-dessous.
fzf est également disponible via MacPorts : sudo port install fzf
Gestionnaire de paquets | Distribution Linux | Commande |
---|---|---|
APK | Linux alpin | sudo apk add fzf |
APTE | Debian 9+/Ubuntu 19.10+ | sudo apt install fzf |
Conda | conda install -c conda-forge fzf | |
DNF | Feutre | sudo dnf install fzf |
Rien | NixOS, etc. | nix-env -iA nixpkgs.fzf |
Pacman | Arch Linux | sudo pacman -S fzf |
paquet | GratuitBSD | pkg install fzf |
pkgin | NetBSD | pkgin install fzf |
pkg_ajouter | OpenBSD | pkg_add fzf |
Portage | Gentoo | emerge --ask app-shells/fzf |
Pack | spack install fzf | |
XBPS | Vider Linux | sudo xbps-install -S fzf |
Zypper | ouvertSUSE | sudo zypper install fzf |
Important
Pour configurer l'intégration du shell (raccourcis de touches et complétion floue), consultez les instructions ci-dessous.
Sous Windows, fzf est disponible via Chocolatey, Scoop, Winget et MSYS2 :
Gestionnaire de paquets | Commande |
---|---|
Chocolaté | choco install fzf |
Scoop | scoop install fzf |
Aile | winget install fzf |
MSYS2 (pac-man) | pacman -S $MINGW_PACKAGE_PREFIX-fzf |
Alternativement, vous pouvez "git cloner" ce référentiel dans n'importe quel répertoire et exécuter le script d'installation.
git clone --profondeur 1 https://github.com/junegunn/fzf.git ~/.fzf~/.fzf/install
Le script d'installation ajoutera des lignes à votre fichier de configuration shell pour modifier $PATH
et configurer l'intégration shell.
Vous pouvez télécharger les binaires officiels de fzf à partir de la page des versions.
https://github.com/junegunn/fzf/releases
Ajoutez la ligne suivante à votre fichier de configuration shell.
frapper
# Configurer les raccourcis clavier fzf et l'évaluation de complétion floue "$(fzf --bash)"
zsh
# Configurer les raccourcis clavier fzf et la source de complétion floue <(fzf --zsh)
poisson
# Configurer les raccourcis clavier fzffzf --fish | source
Note
Les options --bash
, --zsh
et --fish
ne sont disponibles que dans fzf 0.48.0 ou version ultérieure. Si vous disposez d'une ancienne version de fzf ou si vous souhaitez un contrôle plus précis, vous pouvez rechercher des fichiers de script individuels dans le répertoire /shell. L'emplacement des fichiers peut varier en fonction du gestionnaire de packages que vous utilisez. Veuillez vous référer à la documentation du package pour plus d'informations. (par exemple apt show fzf
)
Conseil
Vous pouvez désactiver la liaison CTRL-T ou ALT-C en définissant FZF_CTRL_T_COMMAND
ou FZF_ALT_C_COMMAND
sur une chaîne vide lors de la recherche du script. Par exemple, pour désactiver la liaison ALT-C :
bash : FZF_ALT_C_COMMAND= eval "$(fzf --bash)"
zsh : FZF_ALT_C_COMMAND= source <(fzf --zsh)
poisson : fzf --fish | FZF_ALT_C_COMMAND= source
La définition des variables après avoir recherché le script n'aura aucun effet.
Si vous utilisez vim-plug, ajoutez ceci à votre fichier de configuration Vim :
Branchez 'junegunn/fzf', { 'do' : { -> fzf#install() } } Fiche 'junegunn/fzf.vim'
junegunn/fzf
fournit les fonctions de base de la bibliothèque
fzf#install()
s'assure que vous disposez du dernier binaire
junegunn/fzf.vim
est un projet distinct qui fournit une variété de commandes utiles
Pour en savoir plus sur l'intégration de Vim, consultez README-VIM.md.
Conseil
Si vous utilisez Neovim et préférez les plugins basés sur Lua, consultez fzf-lua.
fzf est activement développé et vous souhaiterez peut-être le mettre à niveau de temps en temps. Veuillez suivre les instructions ci-dessous en fonction de la méthode d'installation utilisée.
git : cd ~/.fzf && git pull && ./install
Brew : brew update; brew upgrade fzf
macports : sudo port upgrade fzf
chocolaté : choco upgrade fzf
vim-plug : :PlugUpdate fzf
Voir CONSTRUIRE.md.
fzf lancera le chercheur interactif, lira la liste depuis STDIN et écrira l'élément sélectionné dans STDOUT.
trouver * -type f | fzf > sélectionné
Sans tube STDIN, fzf parcourra le système de fichiers sous le répertoire actuel pour obtenir la liste des fichiers.
vim $(fzf)
Note
Vous pouvez remplacer le comportement par défaut
Soit en définissant $FZF_DEFAULT_COMMAND
sur une commande qui génère la liste souhaitée
Ou en définissant les options --walker
, --walker-root
et --walker-skip
dans $FZF_DEFAULT_OPTS
Avertissement
Une solution plus robuste serait d'utiliser xargs
mais nous avons présenté ce qui précède car c'est plus facile à comprendre
fzf --print0 | xargs -0 -o vim
Conseil
fzf a également la capacité de se transformer en un processus différent.
fzf --bind 'enter: devenir (vim {})'
Voir Transformation en un processus différent pour plus d'informations.
CTRL-K
/ CTRL-J
(ou CTRL-P
/ CTRL-N
) pour déplacer le curseur de haut en bas
Enter
pour sélectionner l'élément, CTRL-C
/ CTRL-G
/ ESC
pour quitter
En mode multi-sélection ( -m
), TAB
et Shift-TAB
pour marquer plusieurs éléments
Raccourcis de touches de style Emacs
Souris : faites défiler, cliquez, double-cliquez ; Maj-clic et Maj-défilement en mode multi-sélection
fzf fonctionne par défaut en mode plein écran, mais il existe d'autres modes d'affichage.
--height
Avec --height HEIGHT[%]
, fzf commencera sous le curseur avec la hauteur donnée.
fzf --hauteur 40%
la disposition reverse
et --border
vont bien avec cette option.
fzf --hauteur 40% --layout inversé --border
En ajoutant ~
à la hauteur, vous définissez la hauteur maximale.
# Prendra le moins de lignes possible pour afficher les listeseq 3 | fzf --hauteur ~100% séq 3000 | fzf --hauteur ~100%
La valeur de la hauteur peut être un nombre négatif.
# Hauteur de l'écran - 3fzf --hauteur -3
--tmux
Avec l'option --tmux
, fzf démarrera dans une fenêtre contextuelle tmux.
# --tmux [centre|haut|bas|gauche|droite][,TAILLE[%]][,TAILLE[%]]fzf --tmux centre # Centre, 50% largeur et hauteurfzf --tmux 80% # Centre, 80% largeur et hauteurfzf --tmux 100%,50% # Centre, 100% largeur et 50% hauteurfzf --tmux gauche, 40% # Gauche, 40% largeurfzf --tmux gauche,40%,90% # Gauche, 40% largeur, 90% hauteurfzf --tmux haut,40% # Haut, 40% hauteurfzf --tmux bas,80% ,40% # Bas, 80% hauteur, 40% hauteur
--tmux
est ignoré en silence lorsque vous n'êtes pas sur tmux.
Note
Si vous êtes coincé avec une ancienne version de tmux qui ne prend pas en charge les fenêtres contextuelles, ou si vous souhaitez ouvrir fzf dans un volet tmux standard, consultez le script fzf-tmux.
Conseil
Vous pouvez ajouter ces options à $FZF_DEFAULT_OPTS
afin qu'elles soient appliquées par défaut. Par exemple,
# Ouvrir dans la fenêtre contextuelle tmux si sur tmux, sinon utiliser --height modeexport FZF_DEFAULT_OPTS='--height 40% --tmux bottom,40% --layout reverse --border top'
Sauf indication contraire, fzf démarre en « mode de recherche étendue » où vous pouvez saisir plusieurs termes de recherche délimités par des espaces. par exemple ^music .mp3$ sbtrkt !fire
Jeton | Type de correspondance | Description |
---|---|---|
sbtrkt | correspondance floue | Articles correspondant à sbtrkt |
'wild | correspondance exacte (cité) | Objets incluant des wild |
'wild' | correspondance exacte aux limites (cité aux deux extrémités) | Éléments qui incluent wild aux limites des mots |
^music | correspondance exacte du préfixe | Objets commençant par music |
.mp3$ | correspondance exacte du suffixe | Éléments se terminant par .mp3 |
!fire | correspondance exacte inverse | Articles qui n'incluent pas fire |
!^music | correspondance exacte du préfixe inverse | Éléments qui ne commencent pas par music |
!.mp3$ | correspondance exacte du suffixe inverse | Éléments qui ne se terminent pas par .mp3 |
Si vous ne préférez pas la correspondance floue et ne souhaitez pas « citer » chaque mot, démarrez fzf avec l'option -e
ou --exact
. Notez que lorsque --exact
est défini, '
-prefix "décite" le terme.
Un terme de caractère à une seule barre agit comme un opérateur OU. Par exemple, la requête suivante correspond aux entrées commençant par core
et se terminant par go
, rb
ou py
.
^core go$ | rb$ | py$
FZF_DEFAULT_COMMAND
Commande par défaut à utiliser lorsque l'entrée est tty
par exemple export FZF_DEFAULT_COMMAND='fd --type f'
FZF_DEFAULT_OPTS
Options par défaut
par exemple, export FZF_DEFAULT_OPTS="--layout=reverse --inline-info"
FZF_DEFAULT_OPTS_FILE
Si vous préférez gérer les options par défaut dans un fichier, définissez cette variable pour qu'elle pointe vers l'emplacement du fichier
par exemple export FZF_DEFAULT_OPTS_FILE=~/.fzfrc
Avertissement
FZF_DEFAULT_COMMAND
n'est pas utilisé par l'intégration du shell en raison de la légère différence dans les exigences.
CTRL-T
exécute $FZF_CTRL_T_COMMAND
pour obtenir une liste de fichiers et de répertoires
ALT-C
exécute $FZF_ALT_C_COMMAND
pour obtenir une liste de répertoires
vim ~/**
exécute fzf_compgen_path()
avec le préfixe ( ~/
) comme premier argument
cd foo**
exécute fzf_compgen_dir()
avec le préfixe ( foo
) comme premier argument
Les options disponibles sont décrites plus loin dans ce document.
Consultez la page de manuel ( man fzf
) pour la liste complète des options.
Si vous apprenez en regardant des vidéos, regardez ce screencast de @samoshkin pour explorer les fonctionnalités fzf
.
Page wiki d'exemples
Avis de non-responsabilité : les exemples de cette page sont maintenus par la communauté et ne sont pas testés de manière approfondie.
Exemples de fzf avancés
En configurant l'intégration du shell, vous pouvez utiliser les raccourcis clavier suivants dans bash, zsh et fish.
CTRL-T
- Collez les fichiers et répertoires sélectionnés sur la ligne de commande
Vous pouvez remplacer le comportement en définissant FZF_CTRL_T_COMMAND
sur une commande personnalisée qui génère la liste souhaitée
Ou vous pouvez définir les options --walker*
dans FZF_CTRL_T_OPTS
La liste est générée à l'aide de l'option --walker file,dir,follow,hidden
Définissez FZF_CTRL_T_OPTS
pour transmettre des options supplémentaires à fzf
# Prévisualiser le contenu du fichier à l'aide de bat (https://github.com/sharkdp/bat)export FZF_CTRL_T_OPTS=" --walker-skip .git,node_modules,target --preview 'bat -n --color=always {}' - -bind 'ctrl-/:change-preview-window(down|hidden|)'"
Peut être désactivé en définissant FZF_CTRL_T_COMMAND
sur une chaîne vide lors de la recherche du script
CTRL-R
- Collez la commande sélectionnée de l'historique sur la ligne de commande
Si vous souhaitez voir les commandes par ordre chronologique, appuyez à nouveau sur CTRL-R
pour basculer le tri par pertinence.
Appuyez sur CTRL-/
ou ALT-/
pour basculer le retour à la ligne
Définissez FZF_CTRL_R_OPTS
pour transmettre des options supplémentaires à fzf
# CTRL-Y pour copier la commande dans le presse-papiers en utilisant pbcopyexport FZF_CTRL_R_OPTS=" --bind 'ctrl-y:execute-silent(echo -n {2..} | pbcopy)+abort' --color header:italic --header 'Appuyez sur CTRL-Y pour copier la commande dans le presse-papiers'"
ALT-C
- cd dans le répertoire sélectionné
Ou vous pouvez définir les options --walker-*
dans FZF_ALT_C_OPTS
La liste est générée à l'aide de l'option --walker dir,follow,hidden
Définissez FZF_ALT_C_COMMAND
pour remplacer la commande par défaut
Définissez FZF_ALT_C_OPTS
pour transmettre des options supplémentaires à fzf
# Imprimer l'arborescence dans la fenêtre d'aperçuexport FZF_ALT_C_OPTS=" --walker-skip .git,node_modules,target --preview 'tree -C {}'"
Peut être désactivé en définissant FZF_ALT_C_COMMAND
sur une chaîne vide lors de la recherche du script
Les modes d'affichage de ces liaisons peuvent être configurés séparément via FZF_{CTRL_T,CTRL_R,ALT_C}_OPTS
ou globalement via FZF_DEFAULT_OPTS
. (par exemple FZF_CTRL_R_OPTS='--tmux bottom,60% --height 60% --border top'
)
Plus de conseils peuvent être trouvés sur la page wiki.
La complétion floue pour les fichiers et les répertoires peut être déclenchée si le mot avant le curseur se termine par la séquence de déclenchement, qui est par défaut **
.
COMMAND [DIRECTORY/][FUZZY_PATTERN]**
# Fichiers sous le répertoire actuel# - Vous pouvez sélectionner plusieurs éléments avec la touche TABvim **# Fichiers sous le répertoire parentvim ../** # Fichiers sous le répertoire parent qui correspondent à `fzf`vim ../fzf* * # Fichiers sous votre répertoire personnelvim ~/** # Répertoires sous le répertoire actuel (sélection unique)cd ** # Répertoires sous ~/github qui correspondent `fzf`cd ~/github/fzf**
La complétion floue pour les PID est fournie pour la commande kill.
# Peut sélectionner plusieurs processus avecou keykill -9 **
Pour les commandes ssh et telnet, la complétion floue des noms d'hôtes est fournie. Les noms sont extraits de /etc/hosts et ~/.ssh/config.
ssh **telnet **
unset **export ** unalias **
# Utilisez ~~ comme séquence de déclenchement au lieu de la séquence par défaut **export FZF_COMPLETION_TRIGGER='~~'# Options pour fzf commandexport FZF_COMPLETION_OPTS='--border --info=inline'# Utilisez fd (https://github.com/ sharkdp/fd) pour lister les chemins candidats.# - Le premier argument de la fonction ($1) est le chemin de base pour démarrer la traversée# - Voir le code source (achèvement.{bash,zsh}) pour les détails._fzf_compgen_path() { fd --hidden --follow --exclude ".git" . "$1"}# Utilisez fd pour générer la liste du répertoire Completion_fzf_compgen_dir() { fd --type d --hidden --follow --exclude ".git" . "$1"}# Personnalisation avancée des options fzf via la fonction _fzf_comprun# - Le premier argument de la fonction est le nom de la commande.# - Vous devez vous assurer de transmettre le reste des arguments à fzf._fzf_comprun() { commande locale =1 $ changement case "$command" incd) fzf --preview 'tree -C {} | tête -200' "$@" ;; export|unset) fzf --preview "eval 'echo $'{}" "$@" ;; ssh) fzf --preview 'dig {}' "$@" ;;*) fzf --preview 'bat -n --color=always {}' "$@" ;; esac}
Sur bash, la complétion floue est activée uniquement pour un ensemble prédéfini de commandes ( complete | grep _fzf
pour voir la liste). Mais vous pouvez également l'activer pour d'autres commandes en utilisant la fonction d'assistance _fzf_setup_completion
.
# utilisation : _fzf_setup_completion path|dir|var|alias|host COMMANDS..._fzf_setup_completion path avec git kubectl Arbre de répertoires _fzf_setup_completion
(L'API de complétion personnalisée est expérimentale et susceptible d'être modifiée)
Pour une commande nommée "COMMAND" , définissez la fonction _fzf_complete_COMMAND
à l'aide de l'assistant _fzf_complete
.
# Complétion floue personnalisée pour la commande "doge"# par exemple doge **_fzf_complete_doge() { _fzf_complete --multi --reverse --prompt="doge> " -- "$@" < <( echo very echo wow echo such echo doge )}
Les arguments --
sont les options de fzf.
Après --
, transmettez simplement les arguments de complétion d'origine inchangés ( "$@"
).
Ensuite, écrivez un ensemble de commandes qui génèrent les candidats à l'achèvement et transmettez sa sortie à la fonction en utilisant la substitution de processus ( < <(...)
).
zsh récupérera automatiquement la fonction en utilisant la convention de dénomination, mais dans bash, vous devez associer manuellement la fonction à la commande à l'aide de la commande complete
.
[ -n "$BASH" ] && complete -F _fzf_complete_doge -o default -o bashdefault doge
Si vous devez post-traiter la sortie de fzf, définissez _fzf_complete_COMMAND_post
comme suit.
_fzf_complete_foo() { _fzf_complete --multi --reverse --header-lines=3 -- "$@" < <( ls -al )}_fzf_complete_foo_post() { awk '{print $NF}'} [ -n "$BASH" ] && complete -F _fzf_complete_foo -o default -o bashdefault foo
Voir README-VIM.md.
fzf est rapide. Les performances ne devraient pas être un problème dans la plupart des cas d’utilisation. Cependant, vous souhaiterez peut-être connaître les options qui peuvent affecter les performances.
--ansi
indique à fzf d'extraire et d'analyser les codes de couleur ANSI dans l'entrée, ce qui ralentit l'analyse initiale. Il n'est donc pas recommandé de l'ajouter à votre $FZF_DEFAULT_OPTS
.
--nth
rend fzf plus lent car il doit tokeniser chaque ligne.
--with-nth
rend fzf plus lent car fzf doit tokeniser et réassembler chaque ligne.
Vous pouvez configurer des raccourcis clavier pour démarrer des processus externes sans quitter fzf ( execute
, execute-silent
).
# Appuyez sur F1 pour ouvrir le fichier avec less sans quitter fzf# Appuyez sur CTRL-Y pour copier la ligne dans le presse-papiers et abandonnez fzf (nécessite pbcopy)fzf --bind 'f1:execute(less -f {}),ctrl-y : exécuter-silent(echo {} | pbcopy)+abort'
Voir la section CLÉS LIAISONS de la page de manuel pour plus de détails.
become(...)
est similaire à execute(...)
/ execute-silent(...)
décrit ci-dessus, mais au lieu d'exécuter la commande et de revenir à fzf une fois terminé, il transforme fzf en un nouveau processus pour le commande.
fzf --bind 'enter: devenir (vim {})'
Par rapport à la substitution de commande apparemment équivalente vim "$(fzf)"
, cette approche présente plusieurs avantages :
Vim n'ouvrira pas un fichier vide lorsque vous terminerez fzf avec CTRL-C
Vim n'ouvrira pas un fichier vide lorsque vous appuyez sur ENTRÉE sur un résultat vide
Peut gérer plusieurs sélections même lorsqu'elles comportent des espaces
fzf --multi --bind 'enter:devenir(vim {+})'
Pour être juste, exécutez fzf --print0 | xargs -0 -o vim
au lieu de vim "$(fzf)"
résout tous les problèmes mentionnés. Néanmoins, become(...)
offre toujours des avantages supplémentaires dans différents scénarios.
Vous pouvez configurer plusieurs liaisons pour gérer le résultat de différentes manières sans aucun script d'encapsulage
fzf --bind 'enter:devenir(vim {}),ctrl-e:devenir(emacs {})'
Auparavant, vous deviez utiliser --expect=ctrl-e
et vérifier la première ligne de la sortie de fzf
Vous pouvez facilement créer la commande suivante en utilisant les expressions d'index de champ de fzf
# Ouvrez le fichier dans Vim et accédez au linegit grep --line-number . |fzf --delimiter : --nth 3.. --bind 'enter:devenir(vim {1} +{2})'
En liant l'action reload
à une clé ou à un événement, vous pouvez faire en sorte que fzf recharge dynamiquement la liste des candidats. Voir #1750 pour plus de détails.
ps-ef | fzf --bind 'ctrl-r:reload(ps -ef)' --header 'Appuyez sur CTRL-R pour recharger' --header-lines=1 --hauteur=50% --layout=inverse
FZF_DEFAULT_COMMAND='trouver . -type f' fzf --bind 'ctrl-d:reload(find . -type d),ctrl-f:reload(eval "$FZF_DEFAULT_COMMAND")' --hauteur=50% --layout=inverse
L'exemple suivant utilise fzf comme interface de sélection pour ripgrep. Nous sommes liés à l'action reload
pour change
l'événement, donc chaque fois que vous tapez sur fzf, le processus ripgrep redémarrera avec la chaîne de requête mise à jour indiquée par l'expression d'espace réservé {q}
. Notez également que nous avons utilisé l'option --disabled
afin que fzf n'effectue aucun filtrage secondaire.
: | rg_prefix='rg --column --line-number --no-heading --color=always --smart-case' fzf --bind 'start:reload:$rg_prefix ""' --bind 'change:reload:$rg_prefix {q} || vrai' --bind 'enter:devenir(vim {1} +{2})' --ansi --désactivé --hauteur=50% --layout=inverse
Si ripgrep ne trouve aucune correspondance, il se terminera avec un statut de sortie différent de zéro et fzf vous en avertira. Pour supprimer le message d'avertissement, nous avons ajouté || true
à la commande, de sorte qu'elle se termine toujours avec 0.
Voir « Utilisation de fzf comme lanceur Ripgrep interactif » pour des exemples plus sophistiqués.
Lorsque l'option --preview
est définie, fzf démarre automatiquement un processus externe avec la ligne actuelle comme argument et affiche le résultat dans la fenêtre fractionnée. Votre $SHELL
est utilisé pour exécuter la commande avec $SHELL -c COMMAND
. La fenêtre peut défiler à l'aide de la souris ou de raccourcis clavier personnalisés.
# {} est remplacé par la chaîne entre guillemets simples de la ligne cibléefzf --preview 'cat {}'
La fenêtre d'aperçu prend en charge les couleurs ANSI, vous pouvez donc utiliser n'importe quel programme qui met en évidence la syntaxe du contenu d'un fichier, tel que Bat ou Highlight :
fzf --preview 'bat --color=always {}' --preview-window '~3'
Vous pouvez personnaliser la taille, la position et la bordure de la fenêtre d'aperçu à l'aide de l'option --preview-window
, ainsi que la couleur de premier plan et d'arrière-plan de celle-ci avec l'option --color
. Par exemple,
fzf --hauteur 40% --layout reverse --info inline --border --preview 'fichier {}' --preview-window up,1,border-horizontal --bind 'ctrl-/:change-preview-window(50%|caché|)' --color 'fg:#bbccdd,fg+:#ddeeff,bg:#334455,preview-bg:#223344,border:#778899'
Consultez la page de manuel ( man fzf
) pour la liste complète des options.
Des exemples plus avancés peuvent être trouvés ici.
Avertissement
Puisque fzf est un filtre de texte à usage général plutôt qu'un outil de recherche de fichiers, ce n'est pas une bonne idée d'ajouter l'option --preview
à votre $FZF_DEFAULT_OPTS
.
# ********************# ** NE FAITES PAS CELA ! **# *********************export FZF_DEFAULT_OPTS='--preview "bat --style=numbers --color=always --line-range :500 {}"'# bat ne fonctionne avec aucune entrée autre que la liste des fichiersps -ef | fzf séquence 100 | fzfhistoire | fzf
fzf peut afficher des images dans la fenêtre d'aperçu en utilisant l'un des protocoles suivants :
Protocole graphique Kitty
Protocole d'images en ligne iTerm2
Sixel
Voir le script bin/fzf-preview.sh pour plus d'informations.
fzf --preview 'fzf-preview.sh {}'
.gitignore
Vous pouvez utiliser fd, ripgrep ou Silver Searcher pour parcourir le système de fichiers tout en respectant .gitignore
.
# Introduisez la sortie de fd dans fzffd --type f --strip-cwd-prefix | fzf# Définir fd comme source par défaut pour fzfexport FZF_DEFAULT_COMMAND='fd --type f --strip-cwd-prefix'# Maintenant, fzf (sans tube) utilisera la commande fd pour générer la listefzf# Pour appliquer la commande à CTRL-T égalementexport FZF_CTRL_T_COMMAND="$FZF_DEFAULT_COMMAND"
Si vous souhaitez que la commande suive les liens symboliques et ne souhaite pas qu'elle exclue les fichiers cachés, utilisez la commande suivante :
export FZF_DEFAULT_COMMAND='fd --type f --strip-cwd-prefix --hidden --follow --exclude .git'
La liaison de touches CTRL-T
de fish, contrairement à celles de bash et zsh, utilisera le dernier jeton de la ligne de commande comme répertoire racine pour la recherche récursive. Par exemple, en appuyant sur CTRL-T
à la fin de la ligne de commande suivante
ls /var/
listera tous les fichiers et répertoires sous /var/
.
Lorsque vous utilisez un FZF_CTRL_T_COMMAND
personnalisé, utilisez la variable $dir
non développée pour utiliser cette fonctionnalité. $dir
est par défaut .
lorsque le dernier jeton n'est pas un répertoire valide. Exemple:
set -g FZF_CTRL_T_COMMAND "commande find -L $dir -type f 2> /dev/null | sed '1d; s#^./##'"
fzf Theme Playground créé par Vitor Mello est une page Web sur laquelle vous pouvez créer de manière interactive des thèmes fzf.
https://github.com/junegunn/fzf/wiki/Related-projects
La licence MIT (MIT)
Copyright (c) 2013-2024 Junegunn Choi