Ho menzionato fzf alcune volte negli articoli su Linux Uprising, ma non ne ho mai scritto. fzf fa parte del mio flusso di lavoro da molto tempo ed è uno strumento straordinario di cui dovresti essere a conoscenza.
Mi rendo conto che molti di voi stanno già usando fzf, ma per coloro che non lo fanno, questo articolo è per voi. Questa è solo una semplice introduzione a fzf, senza entrare troppo nei dettagli. La pagina del progetto fzf e il wiki forniscono ampie informazioni su fzf, il suo utilizzo, così come molti esempi, quindi controlla quelli per maggiori informazioni.
fzf è un fuzzy finder da riga di comando veloce e interattivo scritto in Go. Lo strumento è disponibile per Linux, macOS, * BSD e Windows.
Può essere utilizzato manualmente o negli script analizzando l’output di un comando, utilizzando le estensioni della shell (che includono il completamento automatico fuzzy per Bash e Zsh, nonché associazioni di tasti come CTRL-T
, CTRL-R
e ALT-C
per Bash, Zsh e Fish) e come plugin Vim / Neovim. C’è anche uno script Tmux per avviare fzf in un riquadro Tmux.
Ecco cosa fanno queste combinazioni di tasti della riga di comando fzf:
CTRL-R
: cerca nella cronologia dei comandi. stampaEnter
per incollare il comando selezionato dalla cronologia sulla riga di comando. Passare dalla rilevanza dell’ordinamento all’ordine cronologico premendoCTRL-R
di nuovo (per impostazione predefinita, l’ordinamento viene eseguito per pertinenza)CTRL-T
: mostra un elenco di file e cartelle nella directory corrente (e nelle sottodirectory). stampaEnter
per incollare il percorso del file / cartella selezionato nella riga di comandoALT-C
: mostra un elenco di sottodirectory nella directory corrente. stampaEnter
percd
nella directory selezionata
Per impostazione predefinita, la sintassi di ricerca consente di digitare più termini di ricerca delimitati da spazi (fzf viene avviato in modalità di ricerca estesa). Se desideri trovare corrispondenze esatte, anteponi al termine di ricerca una virgoletta singola (es 'search-term
). Maggiori informazioni sulla sintassi di ricerca fzf qui.
Il cercatore fzf interattivo utilizza le seguenti combinazioni di tasti per impostazione predefinita: ↑
/ ↓
(o CTRL-J
/ CTRL-K
o CTRL-N
/ CTRL-P
) per spostare il cursore su e giù, il Enter
per selezionare un elemento e CTRL-C
(o CTRL-G
/ ESC
) uscire. Supporta anche la selezione di più elementi quando si utilizza il file -m
argomento della riga di comando e in tal caso è possibile selezionare più elementi utilizzando TAB
e Shift-TAB
.
fzf viene fornito con il supporto del mouse, quindi puoi fare clic, scorrere, fare doppio clic sugli elementi, ecc. Per la modalità di selezione multipla, puoi usare Shift-click
e Shift-scroll
.
Altre funzionalità fzf includono la possibilità di mostrare un riquadro di anteprima (--preview=COMMAND
), impostarne l’altezza (es --height 50%
), aggiungi un bordo (--border
), utilizzare associazioni di tasti personalizzate, utilizzare layout diversi (come un layout inverso), abilitare l’elaborazione di codici colore ANSI e molto altro.
Alcuni semplici esempi che mostrano cosa può fare il fuzzy finder da riga di comando fzf
Ricerca fuzzy nella cronologia della shell (CTRL-R
):
Completamento fuzzy per file e directory (questo viene attivato terminando il comando con la sequenza di trigger, che per impostazione predefinita è **
, seguito dalla pressatura TAB
):
cd **<TAB>
ssh **<TAB>
), nonché variabili di ambiente e alias (ad es export **<TAB>
). Può anche completare automaticamente gli ID di processo e in tal caso non esiste una sequenza di trigger, ad esempio kill -9 <TAB>
.
Trova i file nella directory corrente (e nelle sottodirectory) e quando si seleziona un file (premendo il tasto Enter
key), il file viene aperto tramite l’editor della riga di comando predefinito:
editor $(find * -type f | fzf)
Combinalo con altri comandi per un’interfaccia utente di console interattiva interessante con ricerca fuzzy e un riquadro di anteprima. Per esempio il seguente comando (tramite) usa fzf e apt per elencare tutti i pacchetti disponibili, permettendoti di installare un pacchetto premendo lì Enter
chiave. Qui, fzf viene utilizzato con il --preview
opzione per mostrare un riquadro di anteprima (in questo caso mostra i dettagli del pacchetto DEB selezionato):
apt-cache search '' | sort | cut --delimiter ' ' --fields 1 | fzf --multi --cycle --reverse --preview 'apt-cache show {1}' | xargs -r sudo apt install -y
Per lo screenshot all’inizio di questo articolo, Sto usando il seguente comando (richiede bat, a cat
clone scritto in Rust che include l’evidenziazione della sintassi e altro):
fzf --preview 'bat --style=numbers --color=always --line-range :500 {}'
Per esempi più avanzati, controlla il wiki fzf.
Ho anche scritto su Linux Uprising su alcuni strumenti / script da riga di comando che utilizzano fzf fuzzy finder:
Installa fzf fuzzy finder
fzf è disponibile per Linux (comprese varie versioni ARM, quindi funziona, ad esempio, su Raspberry Pi), macOS, * BSD e Windows.
Su Linux, fzf può essere installato dai repository su Debian9 +, Ubuntu 19.10+, Fedora, Arch Linux, openSUSE, ecc.
Tuttavia, personalmente preferisco installarlo usando il suo script di installazione (scarica automaticamente il binario per il tuo sistema, senza crearlo dai sorgenti). Questo perché imposta tutto per te, l’unica cosa necessaria è procurarsi il file di configurazione della shell. È anche facile aggiornare alle versioni più recenti di fzf (vengono rilasciate abbastanza spesso).
Per installare fzf usando il suo script di installazione, assicurati di avere git
installato, quindi utilizzare:
git clone --depth 1 https://github.com/junegunn/fzf.git ~/.fzf
~/.fzf/install
Lo script di installazione ti farà alcune domande su quali funzionalità abilitare. Molto probabilmente vorrai rispondere di sì (y
) a tutti loro.
Questo è tutto. Ora tutto ciò che devi fare è riavviare la shell o ricaricare il file di configurazione:
source ~/.bashrc
source ~/.zshrc
fzf_key_bindings
Utilizzando questo metodo di installazione, se lo desideri in seguito aggiornalo (sia il completamento che il binario), usa:
cd ~/.fzf
git pull
./install
È anche più facile disinstallalo (questo annulla le modifiche apportate a ~/.bashrc
o ~/.zshrc
e rimuove le associazioni di tasti Fish da ~/.config
; non rimuove il file ~/.fzf
directory):
cd ~/.fzf
./uninstall
Ti e piaciuto questo articolo?
Supporta il mio lavoro, facendo una donazione!