Direkt zum Hauptinhalt springen

Felix Nehrke

Ich schreibe hier über Softwareentwicklung und Softwarearchitektur.

english

Zoxide: das bessere cd

Vor einiger Zeit bin ich auf Zoxide gestoßen, ein Tool, das behauptet ein schlaueres cd Kommando zu sein. Und tatsächlich, seit ich es benutze, fühlt sich alles intelligenter an. Meine Navigation im Terminal hat sich verändert. Die Änderung war subtil und beeinflusst fast meine gesamte tägliche Arbeit. In diesem Artikel möchte ich daher einen Einblick geben, warum ich denke, dass jeder dieses Tool braucht und wie ich es verwende.

Das Problem und Zwischenlösungen

Wer viel Zeit im Terminal verbringt weiß, wie repetitiv das Eintippen von cd Befehlen sein kann. Ich wechsle täglich unzählige Male zwischen Verzeichnissen. Manche Verzeichnisse werden häufig aufgerufen, andere bleiben praktisch ungenutzt. Hinzu kommt, dass einige der häufig aufgerufenen Verzeichnisse sehr tief verschachtelt sind.

In der Vergangenheit habe ich viele Ideen ausprobiert effizient zwischen Verzeichnissen zu navigieren, aber keine davon fühlte sich richtig an. Einer meiner ersten Versuche war die Verwendung von Symlinks, um häufig verwendete Verzeichnisse näher an mein Home-Verzeichnis zu bringen. Das führte jedoch zu zahlreichen Problemen und hat die Navigation nicht wirklich vereinfacht. Später bin ich dann noch auf eine sehr feine Orderstruktur gewechselt, wodurch dieser Ansatz hinfällig wurde.

Dann stieß ich auf goto, ein Werkzeug um auf die wichtigsten Verzeichnisse via Lesezeichen zuzugreifen. Das machte es zwar einfacher, aber benötigte stete Wartung und war auch nicht sehr flexibel.

Alle meine Ansätze hatten also gemeinsam, dass sie statisch waren und unnötig viel manuelle Arbeit erforderten.

Ein intelligenteres cd

Zoxide verhält sich wie ein Drop-in-Ersatz für den cd Befehl. Der Unterschied besteht darin, dass es sich die von mir besuchten Verzeichnisse merkt und eine kleine interne Datenbank mit Bewertungen erstellt. Häufig und kürzlich verwendete Verzeichnisse erhalten eine höhere Bewertung. Wenn ich ein kurzes Schlüsselwort eingebe, ermittelt Zoxide automatisch das wahrscheinlichste Ziel und führt mich dorthin.

Das bedeutet, dass ich keine vollständigen Pfade mehr eingeben oder mich auf den endlosen Shell-Verlauf verlassen muss. Es ist wie cd, nur mit Speicher und Unterstützung für faules tippen.

Verzeichnisse mit minimalem Aufwand wechseln

Ein gutes Beispiel ist das Verzeichnis dieser Website. Es befindet sich bei mir hier:
~/Development/nemoinho/gitea.nehrke.info/nemoinho/nehrke.info

Um dorthin zu gelangen, gebe ich jedoch nur noch folgendes ein:

cd neh

Dieser kurze Befehl liefert Zoxide bereits genügend Informationen, um mein Ziel zu erreichen, egal wo ich mich gerade befinde. Der Grund dafür ist das Bewertungssystem in Kombination mit Fuzzy-Matching und Shell-Vervollständigung. Wenn neh kein Verzeichnis im aktuellen Verzeichnis ist, prüft Zoxide seine interne Datenbank. Dabei findet es alle passenden Einträge und sortiert sie nach ihrer Bewertung. Schließlich wechselt es in das Verzeichnis mit der höchsten Bewertung. Mit der Zeit lernt es, welches Verzeichnis ich wahrscheinlich meine, wenn ich etwas tippe, und führt mich dorthin. Das liegt daran, dass die Bewertung bei jedem Verzeichniswechsel erneuert wird. Es sind keine expliziten Lesezeichen oder andere Konfigurationen erforderlich. Es lernt einfach durch die Nutzung.

Mein Setup

Standardmäßig bietet Zoxide einen eigenen Befehl namens z. Ich bevorzuge jedoch weiterhin cd, daher habe ich Zoxide so konfiguriert, dass dieser Name übernommen wird. So bleiben meine Gewohnheiten gleich, und ich profitiere trotzdem von allen Vorteilen.

Nach der Installation mittels eines passenden Packetmanagers (debian: apt, macos: brew) muss Zoxide noch in der Shell konfiguriert werden. In meinem Fall ist das in der .bashrc. Für andere Shells gibt es analoge Konfigurationen, welche auf der Projektseite beschrieben werden.

# init zoxide falls vorhanden und setze alias auf cd
which zoxide > /dev/null && eval "$(zoxide init --cmd cd bash)"

Diese Zeile reicht aus um Zoxide zu konfigurieren. Es klinkt sich in meine Shell ein und verwandelt cd in eine intelligentere Version, die sich bei Bedarf immer noch wie das Original verhält. Wenn ich in ein Verzeichnis springen möchte, das Zoxide noch nicht kennt, gilt weiterhin das normale Verhalten von cd.

Was ich an Zoxide mag

Das Schöne an Zoxide ist seine Einfachheit. Es erfordert keine großen Anpassungen oder Plugins und erfordert keine Einarbeitung. Schon nach einigen Tagen denkt man nicht mehr darüber nach und ich wette keiner will mehr darauf verzichten. Man tippt einfach weniger und kommt trotzdem schneller ans Ziel.

Gerade wer an vielen Projekten arbeitet, häufig Verzeichnisse wechseln muss oder tief verschachtelte Strukturen hat, für diejenigen ist dieses Tool ein echter Game-Changer. Es gibt mehr Handlungsfreiheit und reduziert die Last sich alles zu merken. Tatsächlich habe ich dadurch viel weniger nachgedacht, ohne die Kontrolle zu verlieren! Im Vergleich zu all der KI in unserem heutigen Alltag fühlt sich das für mich sehr erfrischend an.

Schlusswort

Zoxide ist eines dieser Tools, von denen man erst merkt, dass man es braucht, wenn man es ausprobiert. Es ist weder auffällig noch komplex, aber es erleichtert die tägliche Shell-Arbeit enorm. Wer immer noch lange Pfade eingibt oder den Shell-Verlauf nach einem Ordner durchsucht, sollte Zoxide installieren und eine Woche ausprobieren. Wahrscheinlich wird man nicht mehr zurück wollen. Bei mir hat es nur einen Tag gedauert und ich war begeistert.