Eu tenho tentado vincular o atalho CTRL-[à função unindent, mas parece que se você digitar bind ^[ unindent main
( CTRL-[) no nanorc, o texto ainda será formatado em vermelho, não no verde usual que informa que a vinculação funcionaria. Tentei mudar para bind M-[ unindent main
( ALT-[), mas ainda não funcionou. Estranhamente, ambos CTRL-]e ALT-]funciona. Existe alguma maneira de resolver este problema?
Você não pode.
Os terminais enviam caracteres, não chaves. (Consulte Como funcionam a entrada do teclado e a saída de texto? para obter mais detalhes.) Mas nem todas as teclas têm um caractere correspondente. Quando você pressiona uma tecla ou acorde de tecla que não possui um caractere correspondente, o terminal envia uma sequência de caracteres que o representa ou, em alguns casos, um caractere de controle não imprimível ). Essas sequências sempre começam com um caractere específico, que é chamado de caractere de escape . Esse personagem também é o que Ctrl+ [envia.
Então, se você pudesse vincular
^[
( Ctrl+ [), isso quebraria todas as chaves que enviam sequências de escape. Por exemplo, Upenvia os três caracteres (^[
,[
,A
) ou os três caracteres (^[
,O
,A
), dependendo do terminal. Se você pudesse religar^[
, a Upchave faria a ação de^[
e, em seguida, inseriria[
eA
.Alt+ charenvia o caractere de escape seguido por char . Então, se você rebobinar
M-[
, você realmente estaria 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
^[
(a partir da versão 2.5.3), mas isso não tem efeito porque quando lê^[
, classifica isso como o início de uma sequência de escape (estou simplificando um pouco) e nunca procura uma ligação para^[
. Nano proíbe explicitamente a religaçãoM-[
.Existem maneiras de contornar isso em alguns terminais , mas apenas alguns editores tiram proveito delas. O Nano é um editor relativamente simples, que visa principalmente usuários que não usam terminais onde existem essas formas e não suporta esse recurso.