Entendendo os caracteres de controle em .inputrc

16

Minha conta do Linux em uma máquina remota vem com o seguinte pré-definido .inputrc

"\e[1~": beginning-of-line
"\e[4~": end-of-line
“\e[5~”: history-search-backward
“\e[6~”: history-search-forward
"\e[3~": delete-char
"\e[2~": quoted-insert
"\e[5C": forward-word
"\e[5D": backward-word
"\e\e[C": forward-word
"\e\e[D": backward-word

set completion-ignore-case on
set bell-style visible
set expand-tilde on
set convert-meta off
set input-meta on
set output-meta on
set show-all-if-ambiguous on
set visible-stats on

Eu estou lendo a documentação da GNU bash no tópico , mas não consegui encontrar uma seção explicando o que o caractere sequencia \e[1~ , \e[5C , \e\e[D , etc.

Acho que li em algum lugar que \e significa o meta character (que eu acho que é Alt no meu teclado), mas não entendo quais são os outros caracteres de controle [ , ~ , 5D etc. significa.

Alguém sabe de uma boa referência sobre o tema?

    
por Amelio Vazquez-Reina 11.04.2011 / 17:00

1 resposta

17

Estas são Sequências de escape de código de controle ANSI que são transmitidas quando várias teclas não alfanuméricas são pressionadas em um "terminal" teclado.

\ e significa o caractere ASCII "ESCAPE" (octal 033 hex 1B decimal 27). Que faz parte de uma sequência de comando introdução (CSI).

Escape [ 2 ~ é uma sequência de caracteres transmitida quando você pressiona a tecla "Inserir" em um terminal VT220 (ou posterior) .

Muitas dessas convenções foram adotadas em softwares como consoles / shells xterm e Linux - geralmente estendidos de várias maneiras, às vezes incompatíveis.

O uso dessas seqüências na função READLINE do bash é descrito nas man pages

       In  the  second  form,  "keyseq":function-name or macro, keyseq differs
       from keyname above in that strings denoting an entire key sequence  may
       be  specified  by  placing the sequence within double quotes.  Some GNU
       Emacs style key escapes can be used, as in the following example,  but
       the symbolic character names are not recognized.

          "\C-u": universal-argument
          "\C-x\C-r": re-read-init-file
          "\e[11~": "Function Key 1"

    
por 11.04.2011 / 17:21

Tags