Isso mostra que a ligação de teclas padrão de Meta+Esc(e Ctrl+i) no modo de edição da linha de comando do Emacs é a função Readline complete. A Metachave geralmente está Escem teclados sem uma Metachave explícita . A documentação do Readline para esta função diz
Tente executar a conclusão do texto antes do ponto. A conclusão real realizada é específica do aplicativo. Bash, por exemplo, tenta concluir tratando o texto como uma variável (se o texto começa com $), nome de usuário (se o texto começa com
~), nome do host (se o texto começa com @) ou comando (incluindo aliases e funções) por sua vez. Se nada disso produzir uma correspondência, a conclusão do nome do arquivo será tentada. O Gdb, por outro lado, permite a conclusão das funções e variáveis do programa e apenas tenta a conclusão do nome do arquivo em determinadas circunstâncias.
Em relação ao seu comentário à resposta de Anthon : Não, pressionar Escduas vezes não é o mesmo que pressionar Tabgeralmente (a menos que esteja em um programa que mapeie os dois para a mesma ação, como o Readline faz por padrão). No entanto, Ctrl+ié o mesmo que Tab, assim como Ctrl+[é o mesmo que Esc. Isso significa que você pode concluir com Ctrl+[Ctrl+[in bashse desejar, desde que double Escesteja vinculado à completefunção Readline . Isso é útil se você estiver trabalhando em um terminal VT220, por exemplo, sem a tecla Escape:
Kusalananda, obrigado por esta resposta profunda. Sobre o seu último ponto: por que pressionar Escduas vezes (ou \M-\e) não é o mesmo que Tabno bash, se os dois fazem a conclusão?
flow2k
1
@ flow2k É o mesmo se Esc-Esc e Tab estiverem ligados à completefunção, que são por padrão, mas geralmente não (por exemplo, as teclas não são "iguais"). Você não pode substituir o Tab pelo Esc-Esc em qualquer lugar, apenas em programas compatíveis com readline. No entanto, você pode substituir Tab com Ctrl-i ou Esc com Ctrl- [em qualquer lugar.
Kusalananda
Um acompanhamento, se eu puder: eu não vejo Tabna saída de bind -p. Por que é que? Talvez porque Tabseja "codificado" e não possa ser vinculado?
flow2k
1
@ flow2k Não, o Tab é idêntico ao Ctrl-i. Procure \C-i. Esta é uma equivalência no nível do hardware.
Kusalananda
8
Isso é chamado de conclusão de arquivo e, se você não tiver nenhum comando anterior na linha de comando, o bash oferecerá a você a conclusão de todos os 2837 comandos que ele conhece, tanto internos quanto os encontrados em seu PATH
Esc
duas vezes (ou\M-\e
) não é o mesmo queTab
no bash, se os dois fazem a conclusão?complete
função, que são por padrão, mas geralmente não (por exemplo, as teclas não são "iguais"). Você não pode substituir o Tab pelo Esc-Esc em qualquer lugar, apenas em programas compatíveis com readline. No entanto, você pode substituir Tab com Ctrl-i ou Esc com Ctrl- [em qualquer lugar.Tab
na saída debind -p
. Por que é que? Talvez porqueTab
seja "codificado" e não possa ser vinculado?\C-i
. Esta é uma equivalência no nível do hardware.Isso é chamado de conclusão de arquivo e, se você não tiver nenhum comando anterior na linha de comando, o bash oferecerá a você a conclusão de todos os 2837 comandos que ele conhece, tanto internos quanto os encontrados em seu
PATH
Eles são apresentados em ordem classificada
fonte