Como ligar uma função ao combo de tecla Control-2 no bash

4

Eu quero definir uma ligação de chave no bash para o comando readline "history-search-backward" para uma combinação de Control + alguma outra chave (estou usando 2 como exemplo), mas não consigo fazê-lo.

(editar: parece que o problema foi a minha escolha de 2 como a chave de exemplo. Eu tentei com \ Cl e está funcionando. Eu ainda vou aceitar uma resposta se alguém explicar por que 2 doesn ' t trabalho)

Depois de várias tentativas, meu ~ / .inputrc agora se parece com isso

set bind-tty-special-chars off
"\C-2": history-search-backward

mas não funciona e liga -p | grep "-2" não fornece nada. Se eu tentar algo sem a chave de controle, funciona:

"C-2": history-search-backward

Eu posso pesquisar no histórico prssing a sequência C + - + 2.

bind -p dá o controle na forma \ C, por exemplo:

"\C-w": unix-word-rubout

Eu tentei diferentes formatos no meu inputrc:

Control-2: history-search-backward
Ctrl-2: history-search-backward
"Control-2": history-search-backward

mas nada funciona.

"\e2": history-search-backward

funciona se eu pressionar Escape seguido por 2.

Alguém pode ajudar?

Configuração:
Fedora 11:
Bash versão 4.0.23 (1)
GNU Readline 5.2 (de acordo com a página man)

    
por Nuno Maltez 19.08.2009 / 16:59

1 resposta

5

Não há código ASCII para o Control-2. Control- @ através de Control-_ corresponde aos códigos de controle 0x00 (NUL) a 0x1F (Unit Separator). Por exemplo, o código para Control-I é o código para 'I' (0x49) menos 0x40 = 0x09 (HT, tabulação aka). Não há definição definida para Control + (algum outro caractere que não esteja no bloco @ to _).

Os programas que fazem o seu próprio manuseio de teclado podem interpretar o Controle da maneira que quiserem, em combinação com qualquer outra tecla. Mas programas como o bash, que lêem suas entradas através de um terminal, não têm nenhuma maneira de ver o Control-2.

    
por 21.08.2009 / 19:09

Tags