Preenchimento automático do Bash: primeiro liste os arquivos e depois os percorra

26

É possível configurar o bash de forma que, na primeira guia, complete automaticamente todos os arquivos possíveis e nos subseqüentes alterne entre as opções?

Ambas as opções são fáceis de executar separadamente e eu poderia vinculá-las a chaves diferentes, mas as opções acima seriam perfeitas, mas não consigo encontrar nada sobre isso na rede.

Voo
fonte
3
Já faz um tempo desde que usei o ZSH, mas acredito que suas funções de preenchimento automático assim.
Jordanm #
1
@ jordanm Bem, parece ser uma opção se nada mais funcionar, mas isso também exigiria a atualização de tudo, desde .bashrc, etc. até os equivalentes ZSH, que eu gostaria de evitar.
Voo

Respostas:

31

Isso parece próximo ao que você deseja:

bind "TAB:menu-complete"
bind "set show-all-if-ambiguous on"
Jim Paris
fonte
1
Quase perfeito, além da pequena falha que também é preenchida automaticamente na primeira guia, o que pode ser um pouco chato se eu estiver apenas tentando descobrir o nome exato (ou seja, preciso excluir um pouco mais de caracteres se quiser mudar então), mas estou bastante disposto a viver com isso.
Voo
1
Como isso pode ser desfeito facilmente?
Dingalapadum 13/10/2015
1
bind "TAB:complete"; bind "set show-all-if-ambiguous off"
Jim Paris
13
O @Voo add a terceira linha bind "set menu-complete-display-prefix on"listará apenas os candidatos na primeira guia sem o preenchimento automático.
Naitree 17/11
2
@Naitree não pode aprovar sua sugestão o suficiente. Funciona e é tão, muito melhor que o comportamento padrão do bash. Obrigado.
precisa
1

É isso que eu uso. Tanto quanto posso dizer, faz exatamente o que você quer.

# 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"

Isso funciona no Mac (10.13 e 10.14) e no Ubuntu (16.04 e 18.04).

Milo
fonte
0

Você considerou? Foi referenciado em Superuser ...

[[ $- = *i* ]] && bind TAB:menu-complete
consertar
fonte
1
menu-completeé apenas metade do que a pergunta está fazendo. Como a pergunta diz, "[duas] outras opções são fáceis de executar separadamente" .
jw013
Sim, eu sei como mudar o comportamento para uma das duas opções, mas essa é a parte mais fácil. O verdadeiro problema é como combinar os dois em um.
Voo