C'è un modo per rendere Bash più amico dei TAB?


31

Uso bash sia sul mio Mac sia come shell Cygwin. Nel complesso, sono abbastanza soddisfatto.

La mia unica lamentela è che il completamento della TAB non è buono come il completamento della TAB della riga di comando di Windows.

Ad esempio, se ci sono due file con lo stesso prefisso, bash emette un segnale acustico quando provo a completare la TAB. Se continuo a inchiodare TAB, alla fine mi mostrerà un elenco di potenziali file.

Preferisco decisamente come Windows scorrerà i potenziali file direttamente dalla riga di comando.

C'è un modo per ottenere bash per operare in modo simile alla riga di comando di Windows in questo senso?

Se non c'è (non voglio cambiare shell), mi manca qualcosa sul completamento della TAB in bash? C'è un modo più efficiente per usarlo?

Risposte:


42

Per ottenere il comportamento di "ciclo attraverso possibili completamenti", copia quanto segue in una posizione appropriata nel tuo file .bashrc:

[[ $- = *i* ]] && bind TAB:menu-complete

Inoltre, bash-completamento fornisce molti altri tipi di completamento oltre al solo completamento del percorso. Ad esempio, menu-complete funziona perfettamente con il modulo di completamento bash di Git per completare i nomi dei comandi, i nomi delle opzioni, ecc.


qual è la procedura per farlo per il terminale OSx?
Alex

2
@Alex: si modifica il file .bashrcnella directory principale in modo che contenga la riga specificata. Se il tuo .bash_profilefile (nella stessa directory) non ha anche una linea come source ~/.bashrc, allora dovresti anche modificarlo per includere tale linea. L'impostazione sarà attiva nelle nuove finestre del Terminale . Se non si dispone di un editor preferito, è possibile aprire il file in TextEdit con il comando open -e ~/.bashrc; se il file non esiste ancora, dovrai prima crearlo con (es.) il comando touch ~/.bashrc.
Chris Johnsen,

1
@Alex, Bash è la shell predefinita su 10.3 e successive, tra cui 10.7 (Lion). Primo echo $SHELL. Quella sarà la shell selezionata per il tuo account utente. Se non è quello che vuoi, dovrai cambiare la tua shell chpass -s /bin/bash(o qualunque shell tu voglia). Se $ SHELL va bene, quindi selezionare Terminale> Preferenze> Avvio> Conchiglie aperte con: e Terminale> Preferenze> Impostazioni> Profili> Shell> Avvio per vedere se la shell utente predefinita è stata sostituita con un comando personalizzato.
Chris Page

5
Qualcuno ha idea di cosa dovrei legare per tornare indietro di un'opzione con Shift + Tab?
ppp

3
@ppp in your .bashrc:bind '"\e[Z":menu-complete-backward'
vault
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.