====== 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]]