Comprensione dei caratteri di controllo in .inputrc


21

Il mio account Linux in una macchina remota viene fornito con il seguente predefinito .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

Sto leggendo la documentazione bash GNU sul tema , ma non sono stato in grado di trovare una sezione che spiega quali sono le sequenze di caratteri \e[1~, \e[5C, \e\e[D, ecc significano.

Credo di aver letto da qualche parte che \emezzi i meta character(che credo sia Altin mia tastiera), ma non capiscono quello che gli altri caratteri di controllo [, ~, 5Decc media.

Qualcuno sa di un buon riferimento sull'argomento?

Risposte:


21

Queste sono sequenze di escape del codice di controllo ANSI che vengono trasmesse quando vengono premuti vari tasti non alfanumerici su una tastiera "terminale".

\ e indica il carattere "ESCAPE" ASCII (033 esadecimale 1B decimale 27). Che fa parte dell'introduzione di una sequenza di comandi (CSI).

Escape [ 2 ~è una sequenza di caratteri trasmessa quando si preme il tasto "Inserisci" su un terminale VT220 (o successivo) .

Molte di queste convenzioni sono state adottate in software come xterm e console / shell Linux - spesso estese in vari modi, a volte incompatibili.

L'uso di queste sequenze nella funzione READLINE di bash è descritto nelle pagine man di readline

       Nella seconda forma, "keyseq": nome-funzione o macro, keyseq differisce
       dal nome chiave sopra in quella stringa che può indicare un'intera sequenza di tasti
       essere specificato posizionando la sequenza tra virgolette doppie. Alcuni GNU
       Le escape di chiavi in ​​stile Emacs possono essere usate, come nell'esempio seguente, ma
       i nomi dei personaggi simbolici non sono riconosciuti.

          "\ Cu": argomento universale
          "\ Cx \ Cr": re-read-init-file
          "\ e [11 ~": "Tasto funzione 1"

Per ottenere un elenco di quali sequenze di escape corrispondono a quali tasti della tastiera, è possibile utilizzare un comando come infocmp -L -1oinfocmp -L -1 xterm


Eccellente!! Questo è esattamente quello che stavo cercando. Grazie @RedGrittyBrick!
Amelio Vazquez-Reina,

+1. Stavo cercando il Ctrlcodice in inputrc-> ENTER= Ctrl+ n.
rendon

@utente1133275: collegamento aggiornato ma il comando man 3 readline sul proprio sistema dovrebbe fornire le stesse informazioni. Il comando man 3 readlinefunziona anche in WSL su Windows 10 . Se necessario, puoi porre una nuova domanda sulle parti specifiche bind -Pdell'output che ti causano difficoltà.
RedGrittyBrick
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.