Grazie alla tua domanda ho finalmente letto un po' e aumentato la mia comprensione, evviva!
Quindi, un'ottima fonte di informazioni è man readline
. Le combinazioni di tasti specificate nei vari inputrc
i file controllano il modo in cui funziona la libreria BASH readline. Secondo la pagina man di readline puoi usare nomi di chiavi simbolici o sequenze di 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"
La pagina man afferma inoltre che il file di configurazione predefinito è ~/.inputrc
quindi ti consiglio di posizionare i tuoi attacchi lì.
Se vuoi usare i normali tasti delle lettere (per esempio Control -g ), Control-g: forward-word
funziona bene. I tasti freccia sono più difficili. Ho provato, senza riuscirci, a trovare la chiave nome per i tasti freccia. Nessuno di quelli che ho provato (left-arrow
, left
, :left
) ha funzionato, quindi sembra che siamo bloccati con le sequenze di escape.
Sfortunatamente, l'esatta sequenza di escape differisce tra gli emulatori di terminale (ecco perché il tuo inputrc di Ubuntu aveva più righe). Per scoprire quale sequenza di escape utilizza il tuo terminale preferito, esegui read
e poi digita la sequenza di tasti che ti interessa. In terminator
, xterm
e gnome-terminal
, Controllo -Sinistra dare:
$ read
^[[1;5D
in aterm
:
$ read
^[Od <-- that is a capital O not a zero (0).
Sperimentando un po', ho scoperto che ^[[D
è Sinistra e ^[[1;5D
è Controllo -Sinistra . Il primo ^[
è Esc chiave, usata qui, suppongo, per denotare una sequenza di escape .
In ogni caso, per legare Control -Sinistra a forward-word
in un modo che funziona per tutti, ho aggiunto queste righe al mio ~/inputrc
:
"\e[1;5D": backward-word
"\eOd": backward-word
Per ragioni che non ho compreso appieno, Control è rappresentato da \e
che dovrebbe essere Esc .
Il mio ultimo ~/.inputrc
file che funziona per tutti i terminali sopra elencati è:
"\e[1;5D": backward-word
"\eOd": backward-word
"\e[1;5C": forward-word
"\eOc": forward-word