Bash autocomplete como zsh

23

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.)

    
por G Gordon Worley III 26.05.2011 / 03:20

3 respostas

21

eu uso

bind 'TAB:menu-complete'

para alcançá-lo

    
por 26.05.2011 / 18:22
21

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

  • zsh: será concluído até ~ / .bash e apresentará uma lista de correspondências que permite anexar _ e pressionar <tab> novamente.
  • bash: passará por todas as correspondências ~ / .ba *.
por 02.11.2014 / 20:12
2

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.

    
por 20.07.2018 / 14:44