CLI-Tool
junegunn/fzf avatar
junegunn/fzf

fzf: dokumentierter Einstieg und klare Einsatzgrenzen

fzf ist ein interaktiver Befehlszeilen-Fuzzy-Finder, der Dateien, Befehlsverlauf, Prozesse und andere Textströme filtert.

82.995 Sterne2.877 ForksGoMIT

Auf einen Blick

Was ist das?
fzf is an interactive command-line fuzzy finder that filters files, command history, processes, and other text streams. Deutsche Einordnung anhand von README, Repository und konkreten Projektpfaden.
Für wen ist es gedacht?
Geeignet für Anwender, deren Aufgabe zu den dokumentierten Funktionen von fzf passt. Ungeeignet als Ersatz für nicht beschriebene Betriebsannahmen.
Darf ich es kommerziell nutzen?
Ja. MIT ist eine freizügige Lizenz: Sie dürfen darauf aufbauende Software nutzen, verändern und verkaufen, solange Sie die Urheberrechts- und Lizenzhinweise beibehalten.
Wird es noch gepflegt?
Ja. Die letzten Commits kamen vor 2 Tagen.
In welcher Sprache ist es geschrieben?
Hauptsächlich Go, laut der Sprachstatistik von GitHub.

Die Antworten beruhen auf den GitHub-Daten des Projekts (zuletzt abgeglichen am 15. September 2026) und auf unserer Analyse. Sie sind keine Rechtsberatung.

TIEFGEHENDE OPEN-SOURCE-ANALYSE

Wofür das Projekt steht: fzf

fzf ist ein allgemeiner Fuzzy-Finder für die Kommandozeile und ein interaktives Terminal-Toolkit. In der einfachsten Nutzung startet er einen interaktiven Finder, liest die Liste von der Standardeingabe und schreibt das ausgewählte Element auf die Standardausgabe. Das README zeigt `find * -type f | fzf > selected`. Wenn die Standardeingabe keine Pipe ist, durchläuft fzf das Dateisystem unter dem aktuellen Verzeichnis und zeigt diese Liste an, etwa mit `vim $(fzf)`. Das README beschreibt fzf als Bausteine, um Shell-Skripte in reichhaltigere Terminal-Anwendungen zu verwandeln, egal ob die Eingabe Dateien, Befehlshistorie oder eine Datenvorschau ist. fzf wird hier an den dokumentierten Angaben gemessen. Für einen reproduzierbaren ersten Blick gehören fzf, CTRL-T, CTRL-R, FZF_DEFAULT_COMMAND, --preview, shell integration zusammen: Der genannte Einstieg zeigt Eingabe, Ausgabe oder Konfiguration dieses Projekts. Nicht beschriebene Leistungswerte, Integrationen und Supportzusagen bleiben offen.

Die zentralen Bausteine: CTRL-T

Das README nennt als Highlights, dass fzf portabel ist, weil es als einzelne Binärdatei verteilt wird, und schnell, weil es darauf optimiert ist, Millionen von Einträgen in Millisekunden zu verarbeiten. Installationswege sind Homebrew, mise, die aufgeführten Linux-Paketmanager (APK, APT, Conda, DNF, Nix, Pacman, pkg, pkgin, pkg_add, Portage, Spack, XBPS, Zypper), Windows-Paketmanager (Chocolatey, Scoop, Winget, MSYS2) sowie Binärdateien von der GitHub-Releases-Seite. Wer das Repository klont und das `install`-Skript ausführt, bekommt Zeilen in der Shell-Konfiguration, die `$PATH` ändern und die Shell-Integration einrichten. Das README nennt weder eine Versionsnummer noch eine Mindestversion des Betriebssystems über die Paketmanager-Tabellen hinaus. fzf wird hier an den dokumentierten Angaben gemessen. Für einen reproduzierbaren ersten Blick gehören fzf, CTRL-T, CTRL-R, FZF_DEFAULT_COMMAND, --preview, shell integration zusammen: Der genannte Einstieg zeigt Eingabe, Ausgabe oder Konfiguration dieses Projekts. Nicht beschriebene Leistungswerte, Integrationen und Supportzusagen bleiben offen.

Der dokumentierte Einstieg: CTRL-R

Die Shell-Integration wird durch Einbinden eines generierten Skripts eingerichtet: für bash `eval "$(fzf --bash)"`, für zsh `source <(fzf --zsh)`, für fish `fzf --fish | source`. Nushell kann keine Pipe an `source` übergeben, deshalb schreibt die Integration eine Datei in das Autoload-Verzeichnis. Diese Optionen gibt es erst in neueren Versionen; das README verweist ältere Installationen auf die Dateien im Verzeichnis `/shell`. Nach der Aktivierung fügt `CTRL-T` ausgewählte Dateien und Verzeichnisse ein, `CTRL-R` fügt Befehle aus der Historie ein und `ALT-C` wechselt in ein ausgewähltes Verzeichnis. Jede Bindung kann deaktiviert werden, indem die zugehörige `*_COMMAND`-Variable vor dem Einbinden leer gesetzt wird. Für Vim und Neovim liefert `junegunn/fzf` die grundlegenden Bibliotheksfunktionen, während `junegunn/fzf.vim` ein separates Projekt mit Befehlen ist. fzf wird hier an den dokumentierten Angaben gemessen. Für einen reproduzierbaren ersten Blick gehören fzf, CTRL-T, CTRL-R, FZF_DEFAULT_COMMAND, --preview, shell integration zusammen: Der genannte Einstieg zeigt Eingabe, Ausgabe oder Konfiguration dieses Projekts. Nicht beschriebene Leistungswerte, Integrationen und Supportzusagen bleiben offen.

Betrieb mit den Projektdateien: FZF_DEFAULT_COMMAND

fzf startet im erweiterten Suchmodus, sodass mehrere durch Leerzeichen getrennte Begriffe als Filter kombiniert werden. Das README listet Token wie `^music` für Präfix-Exaktmatch, `.mp3$` für Suffix, `!fire` für Negation und einen einzelnen Balken als OR-Operator. Die Option `-e` beziehungsweise `--exact` schaltet das Fuzzy-Matching ab; ein in Anführungszeichen gesetzter Begriff erzwingt Exaktmatch. Die Anzeige ist standardmäßig Vollbild, kann aber mit `--height HEIGHT[%]` unterhalb des Cursors begrenzt werden oder mit `--popup` als Popup-Fenster erscheinen; letzteres benötigt tmux 3.3+ oder Zellij 0.44+ und wird sonst still ignoriert. Mit `--style` gibt es die Presets `default`, `full` und `minimal`. Das Standardverhalten lässt sich über `FZF_DEFAULT_COMMAND`, `FZF_DEFAULT_OPTS` und `FZF_DEFAULT_OPTS_FILE` ändern. Die vollständige Optionenliste steht in der Manpage. fzf wird hier an den dokumentierten Angaben gemessen. Für einen reproduzierbaren ersten Blick gehören fzf, CTRL-T, CTRL-R, FZF_DEFAULT_COMMAND, --preview, shell integration zusammen: Der genannte Einstieg zeigt Eingabe, Ausgabe oder Konfiguration dieses Projekts. Nicht beschriebene Leistungswerte, Integrationen und Supportzusagen bleiben offen.

Grenzen und Risiken der Quelle: --preview

Tastenkürzel können externe Prozesse starten, ohne fzf zu verlassen, mit `execute` oder `execute-silent`, zum Beispiel `fzf --bind 'f1:execute(less -f {}),ctrl-y:execute-silent(echo {} | pbcopy)+abort'`. Die Aktion `become(...)` ersetzt fzf durch einen anderen Prozess, sodass `fzf --bind 'enter:become(vim {})'` Vim direkt öffnet und beim Abbruch von fzf keine leere Datei erzeugt. Mit der Aktion `reload` kann die Kandidatenliste aus einem Befehl neu aufgebaut werden; das README zeigt eine interaktive ripgrep-Integration, die bei jeder Eingabe über das `change`-Ereignis und den Platzhalter `{q}` neu startet. Das Vorschaufenster führt `$SHELL -c COMMAND` mit der aktuellen Zeile aus, unterstützt ANSI-Farben und kann Bilder über die Protokolle Kitty, iTerm2 oder Sixel anzeigen. Das README warnt davor, `--preview` in `$FZF_DEFAULT_OPTS` zu setzen, weil fzf ein allgemeiner Textfilter und kein Dateifinder ist. fzf wird hier an den dokumentierten Angaben gemessen. Für einen reproduzierbaren ersten Blick gehören fzf, CTRL-T, CTRL-R, FZF_DEFAULT_COMMAND, --preview, shell integration zusammen: Der genannte Einstieg zeigt Eingabe, Ausgabe oder Konfiguration dieses Projekts. Nicht beschriebene Leistungswerte, Integrationen und Supportzusagen bleiben offen.

Konkrete Entscheidung für den Einsatz: shell integration

Das README sagt, fzf sei schnell und Leistung sollte in den meisten Fällen kein Problem sein, und nennt dann Optionen, die das Scannen verlangsamen können: `--ansi`, `--nth`, ein regulärer Ausdruck als `--delimiter` und `--with-nth`. Außerdem gibt es `--scheme=default`, `--scheme=path` und `--scheme=history`, um das Matching an Eingabetypen anzupassen. Das Projekt steht unter der MIT-Lizenz, Copyright 2013-2026 Junegunn Choi. Die Lizenz erlaubt Nutzung, Kopieren, Modifizieren, Zusammenführen, Veröffentlichen, Verteilen, Unterlizenzieren und Verkaufen von Kopien; sie schließt Gewährleistung und Haftung aus. Die Repository-Metadaten nennen Go als Sprache, 82.323 Sterne, 2.840 Forks und 328 offene Issues. Das README etabliert keine Benchmarks, Sicherheitszusicherungen oder Supportverpflichtungen. fzf wird hier an den dokumentierten Angaben gemessen. Für einen reproduzierbaren ersten Blick gehören fzf, CTRL-T, CTRL-R, FZF_DEFAULT_COMMAND, --preview, shell integration zusammen: Der genannte Einstieg zeigt Eingabe, Ausgabe oder Konfiguration dieses Projekts. Nicht beschriebene Leistungswerte, Integrationen und Supportzusagen bleiben offen.

Redaktionelles Fazit

Geeignet für Anwender, deren Aufgabe zu den dokumentierten Funktionen von fzf passt. Ungeeignet als Ersatz für nicht beschriebene Betriebsannahmen. Prüfe zuerst CTRL-T, CTRL-R und --preview mit einer kontrollierten Eingabe, bevor du den Einsatz ausweitest.

Offizielle Quellen

  1. Official documentation
  2. Official README
  3. Project repository
  4. Release notes
Community-Notizen

Community-Notizen