Como ligar Ctrl + arrows / backspace / del aos comandos Readline

2

Estou tentando fazer as seguintes ligações no meu ~/.inputrc :

(Ctrl+Del): kill-word
(Ctrl+Backspace): backward-kill-word
(Ctrl+forward arrow): forward-word
(Ctrl+back arrow): backward-word
(Home): beginning-of-line
(End): end-of-line

Que anotações de sequência de teclas reais devo usar para elas?

    
por 1234ru 11.05.2017 / 22:17

2 respostas

1

As teclas de função e cursor enviam uma seqüência de escape que começa com o caractere ESC (escape). Pressione Ctrl + V e depois a tecla ou o teclado. Isso insere o caractere ESC literalmente, seguido pelo resto dos caracteres na seqüência de escape.

Por exemplo, suponha que você pressione Ctrl + V Ctrl + Esquerda e insira ^[O5D . ^[ é o caractere de escape. Então, em .inputrc você ligaria com

"\eO5D": backward-word

A seqüência de escape para uma determinada tecla depende do terminal, então você pode acabar ligando mais de uma seqüência de escape à mesma função, dependendo de quais terminais você usa e como você os configura. A boa notícia é que, em geral, não há seqüências de escape que correspondam a chaves diferentes em terminais diferentes.

Muitos terminais não enviam seqüências de escape distintas para todos os chats. Por exemplo, você pode achar que Ctrl + Esquerda e Ctrl + Deslocamento + Esquerda envie a mesma sequência de escape. Pode ou não haver uma maneira de corrigir isso na configuração do terminal; veja este post para uma discussão orientada ao Emacs. Veja também Como criar um conjunto abrangente de possibilidades para definir" caracteres de comando "na tela do GNU? e Como funciona a entrada de teclado e a saída de texto? e Como fazer um conjunto abrangente de possibilidades para a definição de" caracteres de comando "da tela GNU? para alguns antecedentes sobre o assunto.

    
por 12.05.2017 / 02:23
1

Algo parecido com isto:

"\e[1;5C": forward-word
"\e[1;5D": backward-word
"\e[H": beginning-of-line
"\e[F": end-of-line
"\eOH": beginning-of-line
"\eOF": end-of-line
"\e[1~": beginning-of-line
"\e[4~": end-of-line

Dependendo das configurações do terminal e se você está usando screen , xterm enviaria essas variações para Início e Fim , enquanto as teclas de cursor modificadas Control enviam um valor consistente. Você poderia mudar isso (com xterm : outros terminais geralmente não).

O controle / Del e controle / backspace provavelmente não funcionarão, a menos que Del você queira dizer a tecla inferior esquerda no teclado de edição de 6 teclas. Para o xterm, isso envia "\e[3;5~" .

Com putty, você tem poucas opções para "ctrlarrows" porque usa o modificador de controle para alternar entre os modos normal e aplicação das teclas do cursor. Ou seja, você alternaria entre "\ e [C" (normal) e "\ eOC" (aplicativo). Além disso, é possível alterar a home / end (para os desenvolvedores do putty chamados "rxvt") para obter o "\ e [H" mencionado acima.

Leitura adicional:

por 12.05.2017 / 01:54