2015-06-05 19 views
5

Desidero eseguire una funzione quando inizio a digitare nel terminale.Come eseguire una funzione al primo tasto in bash/zsh?

In particolare, voglio eseguire la funzione fzf, per cui attualmente devo premere ctrl-r per attivarla. Vorrei any keystroke to trigger it così la cronologia appare sempre quando scrivo.

Only the first keystroke deve eseguire la funzione, poiché eseguendola più volte commuta tra percorso e selezione del nome file.

+0

Interessante. Pensieri: ['bind'] (http://stackoverflow.com/questions/4200800) probabilmente non funzionerà, poiché non penso che sia possibile soddisfare il requisito del" primo battito solo ". Una linea di comando finta con un [read loop] ad alta velocità (http://stackoverflow.com/questions/11596059) potrebbe funzionare. Utilizzo del terminale in [modo raw] (http://unix.stackexchange.com/questions/18334/) o modifica del [codice sorgente bash] (http://git.savannah.gnu.org/cgit/bash.git) sono probabilmente le strade più probabili. Inoltre, considera [selector] (http://www.idiap.ch/~fleuret/software.html#selector) anziché fzf. – bishop

risposta

1

Ho associato i tasti freccia Up e Down a history-search-backward e history-search-forward rispettivamente. Quindi quando digito qualcosa e poi preme Up o Down, esegue una ricerca cronologica che inizia con lettere digitate. Questo funziona per me in quanto non voglio fare una ricerca della cronologia per ogni comando inserito.

So che questo non è esattamente quello che stai cercando, ma è vicino.

# Bind up and down arrows to do backward and forward history search 
if [[ $- == *i* ]] 
then 
    bind '"\e[A": history-search-backward' 
    bind '"\e[B": history-search-forward' 
fi 
+0

Grazie per l'alternativa, ma penso che preferisco ancora usare ctrl-r per i tasti freccia. –

+0

Sicuro. Un vantaggio è che puoi cercare nella cronologia dopo aver digitato poche lettere. 'Ctrl-r' deve essere sparato prima di digitare qualsiasi cosa. Ma sì, colpi diversi per persone diverse. – ronakg

+0

Non correlato, ma preferisco 'up-line-or-search' e' down-line-or-search' per le frecce su e giù. Questo ha l'ulteriore vantaggio di "cercare indietro/avanti nella cronologia per una riga che inizia con la prima parola nel buffer" rispetto al valore predefinito (molto simile a "history-search-backward") e io uso 'history-incremental-search -backward' e 'history-incremental-search-forward' per' Cr' e 'Cs'. – 4ae1e1

Problemi correlati