O Bash é preenchido automaticamente como zsh


28

Estou usando o bash, mas eu gostaria de ter o preenchimento automático do estilo zsh (você pressiona a guia e ela guia as 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?

Procurando uma solução encontrou muitas respostas para outras perguntas, então espero obter uma resposta simples aqui (ou seja, o que colar nas minhas .bashrc).

(E para responder à pergunta óbvia, eu preciso usar o bash aqui porque acabei de ingressar em uma equipe e eles fazem algumas coisas para configurar o bash para facilitar o ambiente de trabalho. Provavelmente, eventualmente, posso garantir que ele funcione da mesma maneira no zsh, mas por enquanto é mais fácil se eu usar o bash e fazê-lo se comportar mais como o zsh durante o uso interativo.)

Respostas:


22

eu uso

bind 'TAB:menu-complete'

para alcançá-lo


11
Quando adiciono isso ao meu .bashrc, a guia percorre as opções possíveis em vez de listá-las no terminal. É possível obter os dois comportamentos?
Antonios Hadjigeorgalis

Para Shitf-Tabconcluir para trás, use bind '"\e[Z":menu-complete-backward'.
Ainar-G

24

Para obter a primeira conclusão 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: Isso altera o comportamento padrão das funções de conclusão. Se definido como 'on', as palavras com mais de uma conclusão possível fazem com que as correspondências sejam listadas imediatamente em vez de tocar a campainha. O valor padrão é 'off'.

consulte o Manual do Bash para obter mais informações.

Editar:

Isso não faz o bash funcionar exatamente como o zsh tho. O Zsh será concluído até a próxima partida ambígua. O Bash apenas percorrerá todas as partidas.

por exemplo

$ ls ~/.ba<tab> .bashrc .bash_history .bash_profile

  • O zsh: será concluído até ~ / .bash e apresentará uma lista de correspondências que permitem anexar _ e pressionar <tab> novamente.
  • bash: apenas percorrerá todas as correspondências ~ / .ba *.

8
Gostei de usar as teclas de seta e a indicação visual do preenchimento automático do zsh. Existe uma maneira de obter esses comportamentos com o bash? Volto para melhorar a compatibilidade do servidor
CESCO

2

Dando seguimento a ingkebil resposta 's, para aqueles que put binde setem inputrc:

$ tail -n 4 /etc/inputrc
# zsh like completion:
# /superuser/288714/bash-autocomplete-like-zsh
set show-all-if-ambiguous on
TAB:menu-complete

Eu gosto de manter minha .bashrclimpeza.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.