Ligações de linha de leitura não funcionam com modificadores de Controle e Shift

3

Eu estou aprimorando as ligações de tecla do GNU Readline no Bash. Especificamente, desejo alcançar o seguinte efeito de mapeamento:

Controle ' ==> 'I'

Controle Deslocamento ' ==> "I"

Controle ' ==> 'I'

Controle [ ==> [I]

Controle Deslocamento [ ==> {I}

em que I indica a posição do cursor após a expansão.

Eu tentei a seguinte configuração no meu ~/.inputrc . No entanto, apenas o mapeamento <C-'> funciona conforme o esperado:

$include /etc/inputrc
$if mode=emacs
"\C-\'": "\'\'\C-b"
"\C-'": "''\C-b"
"\C-\"": "\"\"\C-b"
"\C-{": "{}\C-b"
"\C-[": "[]\C-b"
$endif

Eu estou querendo saber o que está errado com minha configuração e como fazer esses mapeamentos corretamente (se possível)?

    
por Naitree 27.06.2016 / 10:10

1 resposta

4

Em um terminal, você geralmente não pode ter todas as combinações de modificadores de controle e deslocamento como valores diferentes:

  • a base para controle e mudança é de esquemas US-ASCII (e similares) que define controle e mudança em> para os caracteres alfabéticos mais um poucos caracteres de pontuação.
  • a combinação control + shift geralmente não tem efeito, exceto para chaves especiais .
  • alguns terminais definem seqüências de escape para controle / deslocamento com chaves especiais (como teclas de cursor e de função). A tecla guia não é uma dessas chaves.

Aqui está uma captura de tela para ilustrar os caracteres de controle usando ASCII:

    
por 27.06.2016 / 10:46