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)
- Instalacija:
winget install fzf(Windows),brew install fzf(macOS), ili paketni menadžer vaše distribucije. - Uključite shell integracije (jedna linija u profilu — upute na github.com/junegunn/fzf) da dobijete
Ctrl+RiCtrl+T. - Tjedan dana se silite koristiti
Ctrl+Rumjesto 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.




