Graças à sua pergunta, finalmente fiz algumas leituras e aumentei meu entendimento, vivas!
Portanto, uma boa fonte de informação é man readline
. As combinações de teclas especificadas nos vários arquivos inputrc
controlam o funcionamento da biblioteca readline BASH. De acordo com a manline readline, você pode usar nomes de chaves simbólicas ou seqüências de escape:
Key Bindings
The syntax for controlling key bindings in the inputrc file is
simple. All that is required is the name of the command or
the text of a macro and a key sequence to which it should be
bound. The name may be specified in one of two ways: as a sym‐
bolic key name, possibly with Meta- or Control- prefixes, or
as a key sequence. The name and key sequence are separated by
a colon. There can be no whitespace between the name and the
colon.
When using the form keyname:function-name or macro, keyname is
the name of a key spelled out in English. For example:
Control-u: universal-argument
Meta-Rubout: backward-kill-word
Control-o: "> output"
A página man também afirma que o arquivo de configuração padrão é ~/.inputrc
, então eu recomendo colocar suas ligações lá.
Se você quiser usar as teclas de letras normais (por exemplo Controle - g ), Control-g: forward-word
funciona bem. As teclas de seta são mais difíceis. Eu tentei, e falhei, para encontrar a chave nome para as teclas de seta. Nenhum dos que eu tentei ( left-arrow
, left
, :left
) funcionou então parece que estamos presos às seqüências de escape.
Infelizmente, a seqüência de escape exata é diferente entre os emuladores de terminal (é por isso que o seu inputrc do Ubuntu tem várias linhas). Para descobrir qual sequência de escape seu terminal favorito usa, execute read
e, em seguida, digite a seqüência de teclas em que você está interessado. Em terminator
, xterm
e gnome-terminal
, Control - Esquerda , dê:
$ read
^[[1;5D
em aterm
:
$ read
^[Od <-- that is a capital O not a zero (0).
Experimentando um pouco, descobri que ^[[D
é Esquerda e ^[[1;5D
é Controle - Esquerda . O primeiro ^[
é a chave Esc , usada aqui, suponho, para denotar uma seqüência de escape .
Em qualquer caso, para ligar Control - Esquerda para forward-word
de uma forma que funcione para todos, adicionei estas linhas ao meu ~/inputrc
:
"\e[1;5D": backward-word
"\eOd": backward-word
Por razões que eu não entendi completamente, Controle é representado por \e
, o qual deve ser Esc .
Meu arquivo ~/.inputrc
final que funciona para todos os terminais listados acima é:
"\e[1;5D": backward-word
"\eOd": backward-word
"\e[1;5C": forward-word
"\eOc": forward-word