eu uso
bind 'TAB:menu-complete'
para alcançá-lo
Estou usando o bash, mas gostaria de ter o autocomplete de estilo zsh (você clica em tab e abas através das possibilidades), em vez do que o bash parece fazer, que é exibir uma lista de possibilidades, mas não escolher nada até que eu digite um pouco mais para desambiguar. Como posso obter o comportamento do tipo zsh no bash?
A pesquisa por uma solução encontrou muitas respostas para outras perguntas, por isso espero ter uma resposta simples aqui (ou seja, o que colar no meu .bashrc
).
(E para responder a pergunta óbvia, eu preciso usar o bash aqui porque eu acabei de entrar em uma equipe e eles fazem algumas coisas para configurar o bash para tornar o ambiente mais fácil de trabalhar. Eu provavelmente posso eventualmente ter certeza de tê-lo trabalhando da mesma maneira em zsh, mas por enquanto é mais fácil se eu usar o bash e apenas fazê-lo se comportar mais como zsh durante o uso interativo.)
Para obter o primeiro preenchimento e uma listagem, você pode adicionar o seguinte ao bashrc
bind 'set show-all-if-ambiguous on'
bind 'TAB:menu-complete'
show-all-if-ambiguous: This alters the default behavior of the completion functions. If set to ‘on’, words which have more than one possible completion cause the matches to be listed immediately instead of ringing the bell. The default value is ‘off’.
veja Manual de bash para mais informações.
Editar:
Isso não faz o bash funcionar exatamente como zsh tho. Zsh completará até a próxima partida ambígua. O Bash irá percorrer todos os jogos.
por exemplo,
$ ls ~/.ba<tab>
.bashrc .bash_history .bash_profile
<tab>
novamente. Continuando a resposta do ingkebil , para aqueles que colocam bind
e set
em inputrc
:
$ tail -n 4 /etc/inputrc
# zsh like completion:
# https://superuser.com/questions/288714/bash-autocomplete-like-zsh
set show-all-if-ambiguous on
TAB:menu-complete
Eu gosto de manter meu .bashrc
clean.
Tags bash zsh autocomplete