Completamento automatico Bash: prima elenca i file e poi ciclicali


27

È possibile configurare bash in modo tale che nella prima scheda si completi automaticamente elenca tutti i file possibili e su quelli successivi scorre ciclicamente le scelte?

Entrambe le opzioni sono facili da fare separatamente e potrei legarle a chiavi diverse, ma quanto sopra sarebbe perfetto, ma non riesco a trovare nulla al riguardo in rete.


3
È da un po 'che non uso ZSH, ma credo che il suo completamento automatico funzioni in questo modo.
Giordania,

1
@jordanm Beh, sembra un'opzione se nient'altro funziona, ma ciò implicherebbe anche l'aggiornamento di tutto da .bashrc, ecc. agli equivalenti ZSH, che mi piacerebbe piuttosto evitare.
Voo

Risposte:


31

Questo sembra vicino a quello che vuoi:

bind "TAB:menu-complete"
bind "set show-all-if-ambiguous on"

1
Quasi perfetto, a parte il piccolo difetto che si completa automaticamente nella prima scheda, il che può essere un po 'fastidioso se sto solo cercando di capire il nome esatto (cioè devo eliminare un po' più di caratteri se voglio poi cambia), ma sono abbastanza disposto a conviverci.
Voo,

1
Come può essere facilmente annullato?
dingalapadum,

1
bind "TAB:complete"; bind "set show-all-if-ambiguous off"
Jim Paris,

13
@Voo aggiungi la terza riga bind "set menu-complete-display-prefix on"elencherà i candidati nella prima scheda senza il completamento automatico.
Naitree,

2
@Naitree non può votare abbastanza il tuo suggerimento. Funziona ed è così, molto meglio del comportamento bash predefinito. Grazie.
JBeurer il

1

Questo è quello che uso. Per quanto ne so, fa esattamente quello che vuoi.

# make tab cycle through commands after listing
bind '"\t":menu-complete'
bind "set show-all-if-ambiguous on"
bind "set completion-ignore-case on"
bind "set menu-complete-display-prefix on"

Funziona su Mac (10.13 e 10.14) e Ubuntu (16.04 e 18.04).


0

Hai considerato? È stato referenziato su Superuser ...

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

1
menu-completeè solo la metà di ciò che la domanda sta ponendo. Come dice la domanda, "[b] altre opzioni sono facili da fare separatamente" .
jw013,

Sì, so come modificare il comportamento in una delle due opzioni, ma questa è la parte facile. Il vero problema è come combinare i due in uno.
Voo
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.