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
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:
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
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! ;-)
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
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] ... ;-)
~/.inputrc
pode ser preferível ao contrário/etc/inputrc
e 2. Acho que você pode definir issobash
diretamente: unix.stackexchange.com/q/55203/70524 , unix.stackexchange.com/a/16926/70524git 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 arquivosls
é 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..Após o primeiro, tabvocê precisará inserir mais letras. Então, se você digitar
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
a
e precisa inserir umf
para que ele complete automaticamente o restante, paracd a
tabtabf
tabtabvai resultar em
fonte
a
e precisa do último. Quando você pressiona acidentalmente tab depoisa
de percorrer a lista de todas as conclusões possíveis para chegar à correta.