Come posso fare in modo che il completamento zsh si comporti più come il completamento bash?


17

Sono un recente convertito da bash a zsh (che sto usando "oh my zsh" con), ma una cosa mi dà fastidio:

Quando premo il tasto TAB, il primo completamento automatico viene compilato automaticamente e devi scorrere i completamenti premendo ripetutamente la scheda.

Questo differisce da bash, dove ti viene mostrato un elenco dei completamenti. Se tutti i completamenti hanno lo stesso prefisso, questo prefisso viene compilato. Puoi selezionare quello che desideri continuando a digitare.

Trovo preferibile quest'ultimo poiché è più veloce da digitare, che selezionare un completamento premendo ripetutamente la scheda.

C'è un modo per fare in modo che il completamento di zsh si comporti più come bash in questo senso?

Risposte:


18
setopt noautomenu
setopt nomenucomplete

Hai bisogno di entrambi. Se tocchi tab abbastanza volte, otterrai l'elenco dei completamenti ma non aggiungerà mai alcun carattere a ciò che hai digitato finora.


3

Non credo sia il comportamento predefinito, ma puoi disattivarlo utilizzando:

setopt +o menucomplete

Altre impostazioni che influiscono questo comportamento in modi diversi comprendono: autolist, automenu, bashautolist, listambiguous. Vedere la sezione "Completamento" di man zshoptionsper i dettagli. Puoi aggiungere questo comando al tuo ~/.zshrcfile.

Puoi configurare molte altre cose in modo interattivo facendo:

autoload -U compinstall
compinstall

e seguendo le istruzioni e i menu.

In Bash, questo comportamento è controllato dall'associazione Taba completeo menu-completein ~/.inputrc:

"\C-i": complete   # do list completion

o da un prompt della shell o in ~/.bashrc:

bind '"\C-i": menu-complete' # do menu completion

1
meta commento: come hai fatto ad avere il carattere "tab" così?
Brava persona,

2
@Bood Person:<kbd>Tab</kbd>
In pausa fino a nuovo avviso.
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.