fzf¶
https://github.com/junegunn/fzf
https://github.com/junegunn/fzf/wiki
https://sim590.github.io/fr/outils/fzf/#extension-de-la-complétion
https://github.com/junegunn/fzf/wiki/examples
https://github.com/junegunn/fzf/blob/master/ADVANCED.md
Installation:¶
$ brew install fzf
# To install useful key bindings and fuzzy completion:
$ $(brew --prefix)/opt/fzf/install
Syntaxe:¶
Token | Match type | Description |
---|---|---|
sbtrkt |
fuzzy-match | Items that match sbtrkt |
'wild |
exact-match (quoted) | Items that include wild |
^music |
prefix-exact-match | Items that start with music |
.mp3$ |
suffix-exact-match | Items that end with .mp3 |
!fire |
inverse-exact-match | Items that do not include fire |
!^music |
inverse-prefix-exact-match | Items that do not start with music |
!.mp3$ |
inverse-suffix-exact-match | Items that do not end with .mp3 |
Options
Search mode
-e, --exact
Enable exact-match
-i Case-insensitive match (default: smart-case match)
+i Case-sensitive match
Utilisation 1:¶
~/Documents/Scripts_Raspberry master* 19s 17:46:16
$ find . | fzf
puis on entre des mots-clé pour affiner la recherche.
Utilisation 2:¶
~/Documents/Scripts_Raspberry master*
$ nano $(fzf)
On filtre: 'led
Return ouvre le fichier dans nano.
On peut ouvrir plusieurs fichiers dans nano:
~/Documents/Scripts_Raspberry master*
$ nano $(fzf -m)
puis Tab pour sélectionner plusieurs fichiers et Return pour les ouvrir.
Fuzzy completion¶
Déclencheur: ** puis
Utilisation 3 (complétion de cd):¶
~/Documents/Scripts_Raspberry master* 18:00:32
$ cd **
Puis Tab
Puis Return
~/Documents/Scripts_Raspberry master*
$ cd SiriControl/
~/Documents/Scripts_Raspberry/SiriControl master*
$
La complétion marche aussi avec la commande ssh: les serveurs sont tirés de /etc/hosts et de ssh/config.
Utilisation 4 (kill):¶
Taper kill puis Espace puis Tab
$ kill<espace>
Tab pour sélectionner les process à tuer puis Return:
~/Documents/Scripts_Raspberry/SiriControl master*
$ kill 266 311
Utilisation 5 (complétion de cat):¶
~/Documents/Scripts_Raspberry master*
$ cat **
Puis Tab
Puis Return
~/Documents/Scripts_Raspberry master*
$ cat pir/pir2.py
La complétion marche aussi avec les variables d'environnement.
$ unset **<Tab>
$ unalias **<Tab>
$ export **<Tab>
Utilisation 6 (complétion de nano):¶
~/Documents/Scripts_Raspberry master*
$ nano /opt/**
Puis Tab
Puis Return
~/Documents/Scripts_Raspberry master*
$ nano /opt/homebrew/etc/httpd/httpd.conf
Lancer la fuzzy recherche dans le répertoire parent:
~/Documents/Scripts_Raspberry master*
$ nano ../**
Options:¶
fzf --height 40% --layout reverse --info inline --border \
--preview 'bat --style=numbers --color=always --line-range :500 {}' --preview-window right \
--color 'fg:#bbccdd,fg+:#ddeeff,bg:#334455,preview-bg:#223344,border:#778899'
# .zshrc
export FZF_ALT_C_OPTS="--preview 'tree -C {} | head -200'"
#export FZF_DEFAULT_COMMAND="find ."
export FZF_DEFAULT_COMMAND='fd --type f --hidden --follow'
# --preview "bat --style=numbers --color=always --line-range :500 {}" --preview="head -$LINES {}"
export FZF_DEFAULT_OPTS='--height 40% --layout=reverse --border'
https://bluz71.github.io/2018/11/26/fuzzy-finding-in-bash-with-fzf.html
https://curatedgo.com/r/fzf-is-a-junegunnfzf/index.html
https://thevaluable.dev/practical-guide-fzf-example/
https://pragmaticpineapple.com/four-useful-fzf-tricks-for-your-terminal/
https://reposhub.com/linux/shell-applications/lincheney-fzf-tab-completion.html
function activate-venv() {
local selected_env
selected_env=$(ls ~/.venv/ | fzf)
if [ -n "$selected_env" ]; then
source "$HOME/.venv/$selected_env/bin/activate"
fi
}