Postoje alati koje instalirate, koristite tjedan dana i zaboravite. I postoje oni rijetki koji se uvuku u mišićnu memoriju toliko da rad na tuđem računalu postane fizički neugodan. Za mene je to već godinama jedan open source projekt s GitHuba: fzf, fuzzy finder za komandnu liniju, autora Junegunna Choija.

Problem koji niste znali da imate

Rad u terminalu je beskrajno ponavljanje istog obrasca: pronađi nešto — datoteku, naredbu od prije tri dana, granu u Gitu, proces koji treba ubiti — pa nešto s time napravi. Standardni alati za taj prvi korak su začuđujuće loši: Ctrl+R za povijest naredbi nađe samo točan niz znakova kojeg se morate sjetiti, ls pa cd pa opet ls za kopanje po direktorijima, git branch pa škiljenje u popis od četrdeset grana.

fzf taj korak zamjenjuje jednim principom: sve je pretraživo dok tipkate, i ne morate znati točan naziv. Utipkate par slova iz sredine naziva, redoslijedom kojim ih se sjećate, i tražena stvar iskoči na vrh. "Fuzzy" znači da gitconf nađe .gitconfig, a docprod nađe docker-compose.production.yml.

Kako konkretno izgleda promjena

Tri navike koje je fzf trajno prepravio:

Povijest naredbi (Ctrl+R). Stara verzija: pokušavate se sjetiti je li naredba počinjala s docker ili sudo docker. Nova verzija: utipkate compose up i vidite interaktivnu listu svih varijanti koje ste ikad pokrenuli, strelicama odaberete, Enter. Ovo samo po sebi opravdava instalaciju.

Skakanje po datotekama (Ctrl+T). Umjesto cd src/components/admin/... i tab-tab-tab, utipkate Ctrl+T, par slova naziva, i putanja se ubaci u naredbu koju pišete. U kombinaciji s editorom (vim $(fzf) ili integracije za VS Code/Neovim) otvaranje bilo koje datoteke u projektu traje sekundu.

Git bez škiljenja. fzf se cijevima (|) spaja s bilo čime, pa je prirodno složiti si aliase: checkout grane biranjem s liste, interaktivni odabir commita za rebase, pregled izmijenjenih datoteka. Jednom kad shvatite obrazac — bilo koji popis postaje interaktivni izbornik — počnete ga primjenjivati na sve: SSH hostove, Docker kontejnere, procese za kill.

Zašto baš ovaj projekt izdvajam

Nije samo korisnost — nego dizajnerska filozofija koja je pouka za svakoga tko gradi alate. fzf radi jednu stvar: interaktivno filtrira redove teksta sa standardnog ulaza. To je cijeli opseg. Zato se spaja sa svime, ništa ne pretpostavlja o vašem okruženju, radi na Linuxu, macOS-u i Windowsima, i nakon deset godina razvoja i dalje se pokreće trenutačno. Nula ovisnosti, jedan binarni file napisan u Gou. Usporedite to s prosječnim današnjim alatom koji za "hello world" povuče pola interneta.

U duhu transparentnosti: ovo nije sponzorirani tekst — riječ je o besplatnom open source projektu s MIT licencom, bez ikakve komercijalne pozadine.

Kako početi (5 minuta)

  1. Instalacija: winget install fzf (Windows), brew install fzf (macOS), ili paketni menadžer vaše distribucije.
  2. Uključite shell integracije (jedna linija u profilu — upute na github.com/junegunn/fzf) da dobijete Ctrl+R i Ctrl+T.
  3. Tjedan dana se silite koristiti Ctrl+R umjesto strelice gore. Nakon toga više neće trebati sila.

Zaključak

Najveći dobici u produktivnosti rijetko dolaze od velikih, spektakularnih alata — dolaze od uklanjanja sitnog trenja koje se ponavlja dvjesto puta dnevno. fzf je ukinuo jedno takvo trenje: trošenje pažnje na pronalaženje umjesto na rad. Zato je na svakom mom računalu prvi install nakon Gita — i zato zaslužuje ovaj tekst.