Inhaltsverzeichnis

fzf - command-line fuzzy finder

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:

Installation

Arch Linux

Verwendung

fzf wird verwendet, indem Textzeilen in den stdin von fzf gleitet wird, oder eine der Tastenkombinationen verwendet wird (erfordert installierte Shellintegration)

TastenkombinationBeschreibung
STRG+TFührt eine Dateisuche rekursiv durch und fügt gefundene Datei auf dem Shell Prompt ein.
STRG+RErsetzt die Shell History Suche, und durchsucht diese mit fzf.
ALT+CFü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 <Suchmuster>**<TAB>

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