====== fzf - command-line fuzzy finder ====== {{ https://raw.githubusercontent.com/junegunn/i/master/fzf.png?250}} **fzf is a general-purpose command-line fuzzy finder.** fzf ist ein interaktiver Unix-Filter für die Befehlszeile, der mit jeder Liste verwendet werden kann. Dateien, Befehlsverlauf, Prozesse, Hostnamen, Lesezeichen, Git-Commits usw. fzf bietet folgende Vorteile: * Portable und keine Abhängigkeiten * Superschnell * Hoher Funktionsumfang * Flexibles Layout * Batterien sind mit inbegriffen * Vim/Neovim Plugin, Tastenkürzel, und fuzzy auto-completion ===== Installation ===== ==== Arch Linux ==== * [[aw>Install|Installiere]] das [[ap>fzf]] Paket. * Für die Shellintegration siehe [[aw>Fzf#Shells|Fzf#Shells]] ===== Verwendung ===== fzf wird verwendet, indem Textzeilen in den [[wpde>Standard-Datenströme#Standardeingabe_(stdin)|stdin]] von fzf gleitet wird, oder eine der Tastenkombinationen verwendet wird (erfordert installierte Shellintegration) ^Tastenkombination^Beschreibung^ |''STRG+T''|Führt eine Dateisuche rekursiv durch und fügt gefundene Datei auf dem Shell Prompt ein.| |''STRG+R''|Ersetzt die Shell History Suche, und durchsucht diese mit fzf.| |''ALT+C''|Führt eine rekursive Verzeichnissuche durch. Und wechselt anschließend in das Verzeichnis.| Für einige Befehle ist auch der Platz/Suchoperator %%**%% aktiviert, der hinter einem Befehl geschrieben und anschließend mit der ''TAB Taste'' ausgelöst wird. ==== Beispiel ==== cat ** Wird das Suchmuster weggelassen, wird alles im aktuellen Verzeichnis rekursiv aufgelistet. Welche Befehle von der Shellintegration erweitert wurden, erfährt man durch: complete | grep _fzf ===== Eigene Befehle mit fzf erweitern ===== Um eigene Befehle und die Funktionalität mit dem %% ** %% zu erweitern, kann die Hilfsfunktion ''_fzf_setup_completion()'' genutzt werden. ===== fd als Suchprogramm verwenden ===== Über globale Variablen und Funktionen kann fzf dazu gebracht werden, das schnellere fd zu verwenden. # Setting fd as the default source for fzf export FZF_DEFAULT_COMMAND='fd --strip-cwd-prefix --hidden --follow --exclude .git' # To apply the command to CTRL-T as well export FZF_CTRL_T_COMMAND="$FZF_DEFAULT_COMMAND" # Use fd (https://github.com/sharkdp/fd) instead of the default find # command for listing path candidates. # - The first argument to the function ($1) is the base path to start traversal # - See the source code (completion.{bash,zsh}) for the details. _fzf_compgen_path() { fd --hidden --follow --exclude ".git" . "$1" } # Use fd to generate the list for directory completion _fzf_compgen_dir() { fd --type d --hidden --follow --exclude ".git" . "$1" } ===== Nützliche Optionen ===== An fzf können über die Globale Variabel ''FZF_DEFAULT_OPTS'' Optionen übergeben werden, damit diese immer aktiv sind. ==== Beispiel ==== ''FZF_DEFAULT_OPTS='--height 100% --cycle' '' ===== Weitere Nützliche Funktionen ===== _fzf_complete_pacman() { _fzf_complete --multi \ --preview 'pacman -Si {1}' \ --header="Paket" -- "$@" < <( pacman -Slq ) } _fzf_complete_yay() { _fzf_complete --multi \ --preview 'yay -Si {1}' \ --header="Paket" -- "$@" < <( yay -Slq ) } _fzf_complete_arch-log() { _fzf_complete_yay "$@" } _fzf_complete_pactree() { _fzf_complete --multi \ --preview 'pacman -Qi {1}' \ --header="Installiertes Paket" -- "$@" < <( pacman -Qq ) } # Aktivert die eigenen fzf Completion Funktionen, Befehle in das $commands Array packen commands=(pacman yay arch-log pactree) if [ -n "$BASH" ]; then for i in "${commands[@]}"; do complete -F "_fzf_complete_${i}" -o default -o bashdefault "${i}" done fi ====== Siehe auch ====== * [[https://github.com/junegunn/fzf|Projekt Webseite]] * [[aw>Fzf|fzf - ArchWiki]] * [[https://www.suletuxe.de/forum/index.php?board=18;action=display;threadid=830|Suletuxe Forum Diskussionsthread]] * [[.:fzf-tab-complete:fzf-tab-complete]]