Compreendendo os caracteres de controle em .inputrc


21

Minha conta do Linux em uma máquina remota vem com os seguintes itens predefinidos .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 bash GNU sobre o tema , mas eu não tenho sido capaz de encontrar uma seção explicando o que as sequências de caracteres \e[1~, \e[5C, \e\e[D, etc. significam.

Acho que eu li em algum lugar que \emeios os meta character(que eu acho que é Altno meu teclado), mas não entendo o que os outros caracteres de controle [, ~, 5Detc. média.

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

Respostas:


21

Essas são seqüências de escape do código de controle ANSI que são transmitidas 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 um terminal VT220 (ou posterior) .

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

O uso dessas seqüências na função READLINE do bash é descrito nas páginas de manual do readline

       Na segunda forma, "keyseq": nome da função ou macro, keyseq difere
       do nome da chave acima, nas cadeias que indicam uma sequência de teclas inteira
       ser especificado colocando a sequência entre aspas duplas. Algum GNU
       As escapes de teclas no estilo Emacs podem ser usadas, como no exemplo a seguir, mas
       os nomes dos caracteres simbólicos não são reconhecidos.

          "\ Cu": argumento universal
          "\ Cx \ Cr": re-read-init-file
          "\ e [11 ~": "Tecla de Função 1"

Para obter uma lista de quais seqüências de escape correspondem a quais teclas do teclado, você pode usar um comando como infocmp -L -1ouinfocmp -L -1 xterm


Excelente!! Era exatamente o que eu estava procurando. Obrigado @RedGrittyBrick!
Amelio Vazquez-Reina

+1. Eu estava procurando por Ctrlcódigo em inputrc-> ENTER= Ctrl+ n.
Rendon

@ user1133275: link atualizado, mas o comando man 3 readline em seu próprio sistema deve fornecer as mesmas informações. O comando man 3 readlinetambém funciona no WSL no Windows 10 . Se necessário, você pode fazer uma nova pergunta sobre as partes específicas da bind -Psaída que estão causando dificuldades.
RedGrittyBrick
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.