
Minha conta 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
Estou lendo a documentação do GNU bashsobre o tema, mas não consegui encontrar uma seção explicando o que significam as sequências de caracteres \e[1~
, \e[5C
, \e\e[D
, etc.
Acho que li em algum lugar que \e
significa meta character
(que acho que está Alt
no meu teclado), mas não entendo o que significam os outros caracteres de controle [
, ~
etc.5D
Alguém conhece uma boa referência sobre o assunto?
Responder1
Estes sãoSequências de escape do código de controle ANSIque são transmitidos quando várias teclas não alfanuméricas são pressionadas em um teclado "terminal".
\e significa o caractere ASCII "ESCAPE" (octal 033 hex 1B decimal 27). Que faz parte de uma introdução à sequência de comandos (CSI).
Escape [ 2 ~
é uma sequência de caracteres transmitida quando você pressiona a tecla "Inserir" em umTerminal VT220 (ou posterior).
Muitas dessas convenções foram adotadas em softwares como xterm e consoles/shells Linux - muitas vezes estendidas de várias maneiras, às vezes incompatíveis.
O uso dessas sequências na função READLINE do bash é descrito nopáginas de manualparaLeia a linha
Na segunda forma, "keyseq":nome da função ou macro, keyseq difere do nome-chave acima, pois as strings que denotam uma sequência de teclas inteira podem ser especificado colocando a sequência entre aspas duplas. Alguns GNU Escapes de teclas no estilo Emacs podem ser usados, como no exemplo a seguir, mas os nomes dos caracteres simbólicos não são reconhecidos. "\Cu": argumento universal "\Cx\Cr": reler o arquivo de inicialização "\e[11~": "Tecla de Função 1"
Para obter uma lista de quais sequências de escape correspondem a quais teclas do teclado, você pode usar um comando como infocmp -L -1
ouinfocmp -L -1 xterm