Produktivitätstool – FZF

Nach langer Zeit komme ich endlich mal wieder zum bloggen in meinem eigenen Blog. Ich habe schon lange vor ein Präsentation zu Produktivitäts- und Entwickler-Tools zu erstellen. Ich sammle schon eine Weile Inhalte für die Präsentation. Mal sehen ob ich noch dazu komme die Präsentation am Stück bei einem Stammtisch zu präsentieren.
Hier im Blog möchte ich aber schon ein jetzt eine kleine Artikelserie „Produktivitätstools“ starten.
Der erste Artikel ist ein mir liebgewordenes Tool mit dem Namen FZF das mir mein Kollege @sweikenb schon vor einiger Zeit empfohlen hatte.

Was ist FZF?

Der Name FZF steht für „fuzzy finder“. Es handelt sich um ein Kommandozeilen-Tool. Es geht hier also nicht um ein GUI-Tool. Wie ihr sehen werdet, sind fast alle Tools die einem so richtig Geschwindigkeit beim täglichen Arbeiten als Entwickler oder Administrator geben nicht wirklich mit einer grafischen Überfläche ausgestattet.

Der Hauptzweck des Tools ist es die Historie auf der Kommandozeile besser und schneller nutzbar zu machen. Häufig sucht man einen Befehl den man vor einiger Zeit abgesetzt hatte. Oder man muss den gleichen Befehl nochmal ausführen. Die meisten modernen Shells kommen da schon mit einem Tool vorinstalliert. Bei der Bash ist es z.B. „history“. Als Ausgabe erhält man eine Liste der letzten Befehle. Jeder Befehl ist nummeriert.

Beispiel aus meiner CLI:

$> history
3104* ls -al
3105* sudo pacman -Sy mc
3106* wmc
3107* /usr/bin/mc
3108* ls -al
3109* xkill
3110* kill
3111* ps aux | grep typora
3112* killall Typora

Will man z.B. den Befehl Nr. 3104 nochmal ausführen kann man das wie folgt machen:

$> !3104

Meist kann man auch über den Shortcut „Strg+R“ in der Historie suchen.
Hier kommt jetzt FZF ins Spiel. Das ersetzt nämlich den Shortcut „Strg+R“ mit einer eigenen Implementierung die wesentlich komfortabler ist.

FZF in Aktion

Über Cursor-Tasten kann man nun navigieren. Die stärke des Tools ist aber die „Fuzzy-Suche“. Tippt man einen Begriff oder mehrere Begriffe ein, wird in der kompletten Vergangenheit gesucht. Auch dann kann man wieder mit den Cursortasten navigieren und einen alten Befehl auswählen.

Das ist aber noch nicht alles. Das Tool kann auch Dateinamen auflösen.
Tippt man z.B. „vim ** <tab>“ wird ein Dialog geöffnet der es erlaubt Dateinamen innerhalb und unterhalb des aktuellen Verzeichnis zu suchen.

Beispielsuche nach „Application.php“

Wie ihr seht ist das sehr komfortabel und schnell.
Die „**“ Auflösung funktioniert grundlegend auch für andere Befehle wie z.B. „ls“.

Auch die Suche nach Hostnamen, Umgebungsvariablen funktioniert mit FZF.

ssh **<TAB>
telnet **<TAB>

unset **<TAB>
export **<TAB>
unalias **<TAB>

Am besten probiert ihr das Tool einfach mal aus.

Installation

Da das Tool in golang geschrieben ist, ist es für quasi jede Plattform verfügbar. Sogar Windows-Benutzer können ihre Kommandozeile damit beschleunigen. Genutzt habe ich es allerdings selbst bisher nur auf meinem Macbook auf der Arbeit und meinem privaten Linux-Rechner.

Die Installation über gängige Paketmanager ist möglich (ja sogar bei Windows). Ich selbst habe die Installation über „git clone“ bevorzugt. Diese funktioniert wunderbar auf meinem Macbook und Linux-Rechner.

git clone --depth 1 https://github.com/junegunn/fzf.git ~/.fzf
~/.fzf/install

Der Installer installiert in die aktuell genutzte Shell. Es werden bash und zsh unterstützt. Auch ein VIM und tmux-Plugin sind verfügbar.
Eine genauere Beschreibung entnehmt ihr bitte der Github-Seite: https://github.com/junegunn/fzf#installation

Viel Spass!