Çfarë është FZF?
FZF është një gjetës fuzzy i linjës së komandës. Kjo ju mundëson të kryeni një kërkim shumë të shpejtë fuzzy në hyrjet që ju e ushqeni atë.
Përveç aftësisë për të kryer shpejt një kërkim fuzzy, ai ka edhe disa përfitime të tjera:

  • Shumë e thjeshtë për t'u përdorur
  • Bateritë e përfshira
  • Shumë i kompozueshëm
  • Dokumentacion shumë i plotë

Funksionaliteti bazë i FZF përfshin:

  • Mbështetje për "modele kërkimi" të ndryshme (të paqarta, përputhje e saktë, fillon me, përfundon me, përjashton, etj.)
  • Një "shtojcë Vim" shumë e dobishme 😍
  • Mbështetje për zgjedhjen e hyrjeve të shumta (flamuri -m)
  • Një dritare paraprake

Një shembull shumë i thjeshtë (megjithëse jo shumë i dobishëm) është:

ls | fzf

Kryeni një kërkim të paqartë në daljen e komandës "ls" dhe printoni atë në stdout

Siç u përmend më lart, FZF vjen me dokumentacion shumë të plotë, kështu që unë do të theksoj vetëm disa nga veçoritë e tij më interesante:

  • Gjeni një komandë specifike në historinë tuaj të linjës së komandës - CTRL-R (kjo është shumë më e dobishme se historia e rregullt).
  • Navigoni shpejt te skedarët dhe drejtoritë nën drejtorinë tuaj - ALT-C. Ju gjithashtu mund të filloni të shkruani një pjesë të emrit të skedarit të ndjekur nga një ** dhe të shtypni skedën e cila do të kufizojë kërkimin tuaj në pjesën tjetër të emrit të skedarit.
  • Gjeni emrat e skedarëve nën drejtorinë tuaj - CTRL-T. Ju mund ta përdorni këtë për të plotësuar automatikisht emrat e skedarëve dhe drejtorive për çdo komandë që ekzekutoni nga linja juaj e komandës
  • "Ka më shumë".

FZF & Vim
Një gjë tjetër e mrekullueshme për FZF është se ai integrohet lehtësisht me Vim dhe ofron një grup të fuqishëm komandash. Në fakt, këto komanda janë aq të dobishme sa kam krijuar harta të personalizuara për shumicën e tyre. Këtu janë vetëm disa (vini re se këto duhet të ekzekutohen në modalitetin e komandës):

  • :Files/:GFiles — kërkoni skedarë në projektin tuaj. "GFiles" vepron në skedarët e gjurmuar nga Git, ndërsa Files vepron në të gjithë skedarët në projektin tuaj. Më dukej mjaft i dobishëm opsioni "parapamje". Mund ta shtoni si kjo:
  • :Lines/:BLines — linjat e kërkimit në buferin ose projektin tuaj aktual. Kjo ka disa avantazhe në krahasim me kërkimin e rregullt, sepse ju mund të kërkoni fuzzy apo edhe të kërkoni për fjalë të palidhura në të njëjtën linjë.
  • :AG — përdorni Ag për të kërkuar dhe lundruar në projektin tuaj. Edhe një herë, e gjeta të dobishme opsionin "parapamje" këtu. Mund ta shtoni si kjo:
  • :Tags/:BTags — kërkoni një etiketë specifike në buferin tuaj aktual ose në të gjithë projektin (kjo është e mrekullueshme).
  • :Snippets — gjeni një fragment specifik UltiSnip. Unë preferoj një hartografi të modalitetit të futjes për këtë, kështu që përdor:
  • :History:/:History/ — gjeni një kërkim të mëparshëm ose një komandë të ekzekutuar, e cila është veçanërisht e dobishme kur dua të ekzekutoj shpejt një komandë që kam ekzekutuar shumë kohë më parë.

Unë ju sugjeroj të shikoni dokumentacionin "FZF-Vim" pasi është shumë i qartë dhe përmban shumë veçori të tjera të dobishme.

FZF & Git
Karakteristikat e FZF dhe aftësia e tij për t'u integruar kaq bukur me Vim duhet të jenë të mjaftueshme për t'ju bindur që ta provoni; megjithatë, argëtimi i vërtetë fillon kur kupton se mund të integrohet pothuajse me çdo gjë (vazhdimisht jam i habitur se sa i kompozueshëm është ky mjet).

Si pjesë e një postimi të shkruar më parë, tregova se si mund të integroni FZF si pjesë e pseudonimeve të Git-it tuaj. Unë thjesht do të përmbledh pseudonimet që kam tendencë të përdor më shpesh:

FZF kudo
FZF mund të përdoret pothuajse në çdo komandë. Ketu jane disa shembuj:

Së pari, le të themi se e gjeni veten në një drejtori që përmban shumë skedarë që dëshironi të fshini; si do t'i fshini këto? Të fshihen të gjithë skedarët në drejtori? Çfarë ndodh nëse disa nga skedarët në këtë direktori janë të rëndësishëm dhe nuk mund të fshihen? Të fshihen skedarët që dëshironi një nga një? Çfarë ndodh nëse ka shumë skedarë që dëshironi të fshini? FZF në shpëtim!

Ju, sigurisht, mund të përdorni diçka si Vifm, por cila është kënaqësia në këtë?

Së dyti, kur punoj me Kubernetes, shpesh e gjej veten duke punuar me grupe të shumta, hapësira të ndryshme emrash dhe mjedise. Dikur mërzitesha kur më duhej të kaloja mes atyre cilësimeve. fatmirësisht FZF-ja më mbuloi.

Për të zgjidhur këtë problem kam krijuar një funksion ndihmës:

Më pas, krijova një drejtori "~.envs" (mund ta emërtoni si të doni) dhe shtova skedarë të ndryshëm që përmbajnë variablat e kërkuara env në formatin e mëposhtëm:

Tani gjithçka që duhet të bëj është burimi i skedarit përkatës kur dua të ndërroj grupe/mjedise. Për ta bërë këtë shpejt, më duhet aftësia për të kërkuar shpejt një emër skedari… Të duket e njohur? 😉

Përpara se të filloja të përdorja pyenv virtualenv (ose Pipenv) i mbaja të gjitha mjediset e mia virtuale nën ~/.virtualenvs/ dhe do të përdorja FZF për të aktivizuar mjedisin e kërkuar:

Shpresojmë, tani e keni parë se mund të bëni gjithçka që dëshironi me FZF (si ndryshimi i shpejtë i RVM-ve ose zgjedhja e shpejtë e skedarit ftplugin të Vim për të hapur). Ju madje mund të përfshini "FZF në kodin tuaj Python".

Nëse nuk e keni përdorur ende FZF-në, provojeni dhe nëse tashmë po e përdorni - ndani se si e përdorni 😃