Como tornar o preenchimento automático do terminal quando existem vários arquivos / diretório?

32

Se eu tiver vários diretórios, como:

afoo abar

Às vezes, meu terminal recusa o preenchimento automático quando eu pressiono tab (por exemplo, "cd a" e depois tab) e imprimo a lista de diretórios. Às vezes, até lança um som barulhento e irritante. Alguma idéia de como torná-lo preenchimento automático em casos como este? Por exemplo, pode aparecer abar primeiro e depois se eu pressionar tab novamente. Vi que este é o caso no Windows, ou alguma aplicação no Ubuntu

TifatulS
fonte

Respostas:

46

Algo que me salvou a vida é ter um ciclo festivo entre as possibilidades, em vez de mostrar uma lista idiota.

Como o bash está sendo usado readlinepara o preenchimento automático, adicione as seguintes linhas a~/.inputrc

Quando estiver satisfeito e tenha testado completamente abaixo solução para alguns dias / semanas, cortar e colar (não copie!) As mesmas configurações a partir ~/.inputrcde /etc/inputrcque contém as configurações do sistema, tornando esta disponível para todos os usuários em seu sistema (incluindo convidado).

O codez:

# mappings to have up and down arrow searching through history:
"\e[A": history-search-backward
"\e[B": history-search-forward
# mappings to have left and right arrow go left and right: 
"\e[C": forward-char
"\e[D": backward-char

# mapping to have [Tab] and [Shift]+[Tab] to cycle through all the possible completions:
"\t": menu-complete
"\e[Z": menu-complete-backward

então exitseu terminal (ou terminal remoto como massa de vidraceiro) e abra-o novamente ...

Exemplos:

  1. Quando você tem 3 arquivos: file1, file2e file3e você digitar:

    e fTabTabTab

    ele percorrerá:

    e file1
    e file2
    e file3
    

    e quando você quiser voltar, basta pressionar Shift+Tab

  2. Quando você digita:

    very-complicated-command with lots of command line parameters

    e da próxima vez que você precisar do mesmo comando, basta digitar:

    very

    e digitará para você:

    very-complicated-command with lots of command line parameters

Isso economizará uma tonelada de tempo no bash! ;-)

Fabby
fonte
2
+1, interessante, mas: 1. ~/.inputrcpode ser preferível ao contrário /etc/inputrce 2. Acho que você pode definir isso bashdiretamente: unix.stackexchange.com/q/55203/70524 , unix.stackexchange.com/a/16926/70524
muru 11/04
Isso é muito bom, obrigado (e tenha o meu voto positivo). Existe uma maneira universal de mostrar as opções pelas quais ele percorre, que combina o melhor dos dois mundos? Eu gosto da possibilidade de tab + tab com pastas e subcomandos, etc., para que não precise me lembrar de todos (por exemplo git branch <tab through branches>, se eu pudesse ver uma lista e uma tabulação através de seus itens, isso seria ótimo!) Para diretórios e arquivos lsé uma opção para ver quais itens estão disponíveis no entanto, para subcommands não é assim tão fácil ou óbvio, infelizmente..
Erik
Isso funciona também no PuTTy! Só tive que reiniciá-lo uma vez :)
np8 05/11
@Erik: Aparentemente, o que você pediu é possível, mas não vai editar minha resposta para manter as coisas simples aqui. (comentário antigo excluído de que não é possível) #
Fabby 04/09
18

Após o primeiro, tabvocê precisará inserir mais letras. Então, se você digitar

cd a

e aperte tabvocê não obtém nada e depois de um segundo tab(imediatamente a seguir), você obtém uma lista dos nomes começando com ae precisa inserir um fpara que ele complete automaticamente o restante, para

cd atabtabftabtab

vai resultar em

cd afoo
Rinzwind
fonte
2
IMHO: Este é o caminho certo. Pessoalmente, acho o comportamento do Windows muito irritante. Considere o caso em que você tem muitos arquivos começando ae precisa do último. Quando você pressiona acidentalmente tab depois ade percorrer a lista de todas as conclusões possíveis para chegar à correta.
Tobias
@Tobias: quando você acidentalmente atingiu [Tab] muito cedo com o outro sistema , ainda existe [Ctrl] [K] ... ;-)
Fabby