Estou ajustando as combinações de teclas do GNU Readline no Bash. Especificamente, desejo alcançar o seguinte efeito de mapeamento:
Control' ==>
'I'
ControlShift' ==>
"I"
Control` ==>
`I`
Control[ ==>
[I]
ControlShift[ ==>
{I}
onde 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 <C-`>
mapeamento 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
Estou me perguntando o que há de errado com minha configuração e como fazer esses mapeamentos corretamente (se possível)?
Responder1
Em um terminal, você geralmente não consegue obtertodoscombinações de modificadores de controle e deslocamento com valores diferentes:
- a base paraao controleemudançavem de esquemas US-ASCII (e similares) que definemao controleemudançapara os caracteres alfabéticos mais umalgunscaracteres de pontuação.
- A combinaçãocontrole + mudançageralmente não tem efeito, excetoespecialchaves.
- alguns terminais definem sequências de escape para controle/mudança comespecialteclas (como teclas de cursor e de função). A tabchave não é uma dessas chaves.
Aqui está uma captura de tela para ilustrar os caracteres de controle usando ASCII: