Como ligar o Control + apostrophe via bind no zsh

2

Existe uma maneira de vincular Control + apostophe via bindkey?
Eu tentei:

 bindkey "\C-'"
 bindkey "^'"
 bindkey "\C-\x27"

e tudo isso não está funcionando

    
por asdfffiii 06.06.2014 / 14:10

1 resposta

3

Provavelmente não. Pelo menos não sem modificar o seu terminal também.

Um shell é executado em um terminal. A unidade básica de entrada em um terminal é um caractere, não um pressionamento de tecla. Quando você adiciona uma ligação de chave ao seu shell, você está realmente vinculando uma sequência de caracteres, não uma combinação de teclas. Não há um caractere Ctrl-apóstrofo.

Desde os primeiros terminais baseados em ASCII, há um conjunto de chaves que podem ser combinadas com Ctrl para produzir um único caractere. As chaves que fazem isso correspondem aos códigos ASCII 0x3f a 0x5f: ? @ A-Z [ \ ] ^ _

Quando a tecla Ctrl é pressionada com um desses caracteres, o valor é transmitido com o bit 0x40 invertido. 0x3f ? torna-se 0x7f DEL e o restante passa a ser 0x00 a 0x1f. O apóstrofo é 0x27, portanto, se ele foi combinado com a tecla Ctrl por essa regra, ele se tornará 0x67, que é g . Obtendo um g quando você digita Ctrl-apostrophe não seria útil, então o terminal não faz isso.

No entanto, é possível vincular chaves que não correspondem a caracteres ASCII únicos, como as teclas de seta, por exemplo. Isso funciona porque essas chaves são traduzidas pelo terminal em uma seqüência de escape - uma sequência de caracteres que começa com escape. Essas sequências podem ser vinculadas a ações úteis. Por exemplo, ESC [ A é normalmente a tecla de seta para cima, que está vinculada a uma ação relacionada ao histórico no shell.

Se você está determinado o suficiente, você pode convencer seu terminal a produzir alguma seqüência de escape para Ctrl-apostrophe, e então usar essa seqüência de escape no seu comando bindkey. Para continuar ao longo dessas linhas, consulte a documentação do seu terminal.

    
por 06.06.2014 / 14:38