Como você pode ligar ^ [ou M- [atalho para uma ação no nano?

0

Eu tenho tentado ligar o atalho CTRL - [ à função unindent, mas parece que se você digitar bind ^[ unindent main ( CTRL - [) em nanorc, o texto ainda será formatado em vermelho, e não o verde normal, que indica que a ligação funcionaria. Eu tentei alterá-lo para bind M-[ unindent main ( ALT - [), mas ainda não funcionou. Estranhamente, tanto CTRL -] quanto ALT -] funcionam. Existe uma maneira de resolver este problema?

    
por HUAN5235 07.06.2018 / 21:15

1 resposta

0

Você não pode.

Os terminais enviam caracteres, não chaves. (Veja Como funciona a entrada de teclado e a saída de texto? para mais detalhes.) Mas nem todas as teclas têm um caractere correspondente. Quando você pressiona uma tecla ou um acorde de tecla que não tem um caractere correspondente, o terminal envia uma sequência de caracteres que o representa ou, em alguns casos, uma control character ). Essas seqüências sempre começam com um caractere particular, que é chamado de caractere escape . Este caractere é também o que Ctrl + [ envia.

Então, se você pudesse ligar ^[ ( Ctrl + [), isso quebraria todas as chaves que enviam seqüências de escape. Por exemplo, Para cima envia os três caracteres ( ^[ , [ , A ) ou os três caracteres ( ^[ , O , A ), dependendo do terminal. Se você pudesse religar ^[ , a tecla Acima executaria a ação de ^[ e, em seguida, inseriria [ e A .

Alt + char envia o caractere de escape seguido por char . Portanto, se você rebote o M-[ , você realmente estará religando a sequência de dois caracteres ( ^[ , [ ), o que quebraria algumas teclas de cursor e de função.

O Nano tecnicamente permite a religação de ^[ (a partir da versão 2.5.3), mas isso não tem efeito porque quando lê ^[ , ele classifica isso como o início de uma seqüência de escape (estou simplificando um pouco) e nunca procura uma ligação para ^[ . Nano proíbe explicitamente a religação de M-[ .

Existem maneiras de contornar isso em alguns terminais , mas apenas alguns editores tiram proveito deles. O Nano é um editor relativamente simples, que tem como alvo principalmente os usuários que não usam terminais onde tais formas existem e não suportam esse recurso.

    
por 07.06.2018 / 22:44