Como faço para que a conclusão do zsh funcione mais como a conclusão do bash?

17

Sou um convertido recente do bash para o zsh (com o qual estou usando "oh my zsh"), mas uma coisa me incomoda:

Quando eu pressiono a tecla tab, o primeiro preenchimento automático é preenchido automaticamente e você precisa percorrer as conclusões pressionando a tecla repetidamente.

Isso difere do bash, onde você apenas mostra uma lista das conclusões. Se todas as conclusões tiverem o mesmo prefixo, esse prefixo será preenchido. Você pode selecionar o que deseja, continuando a digitar.

Acho o último preferível, pois é mais rápido digitar do que selecionar uma conclusão pressionando a guia repetidamente.

Existe alguma maneira de fazer a conclusão do zsh agir mais como o bash nesse aspecto?

sanidade
fonte

Respostas:

18
setopt noautomenu
setopt nomenucomplete

Você precisa dos dois. Se você clicar na guia vezes suficientes, você obterá a lista de conclusões, mas nunca adicionará nenhum caractere ao que você digitou até agora.

Eyal
fonte
3

Eu não acho que esse seja o comportamento padrão, mas você pode desativá-lo usando:

setopt +o menucomplete

Outras configurações que afetam este comportamento de diferentes maneiras incluem: autolist, automenu, bashautolist, listambiguous. Consulte a seção "Conclusão" man zshoptionspara obter detalhes. Você pode adicionar este comando ao seu ~/.zshrcarquivo.

Você pode configurar muitas outras coisas interativamente, fazendo:

autoload -U compinstall
compinstall

e seguindo as instruções e menus.

Em Bash, este comportamento é controlado por ligação Taba completeou menu-completeem ~/.inputrc:

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

ou de um prompt de shell ou em ~/.bashrc:

bind '"\C-i": menu-complete' # do menu completion
Pausado até novo aviso.
fonte
1
meta comentário: como você conseguiu o caractere "tab" com essa aparência?
Boa Pessoa
2
@ Good Person:<kbd>Tab</kbd>
Pausado até novo aviso.