Zrozumienie znaków kontrolnych w .inputrc

22

Moje konto Linux na zdalnym komputerze ma następujące predefiniowane ustawienia .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

Czytam dokumentację bash GNU na ten temat , ale nie byłem w stanie znaleźć punkt wyjaśniający co sekwencje znaków \e[1~, \e[5C, \e\e[Ditp myśli.

Myślę, że przeczytałem gdzieś, że \eoznacza meta character(co moim zdaniem jest Altw mojej klawiaturze), ale nie rozumiem, co pozostałe znaki sterujące [, ~, 5Ditp średnią.

Czy ktoś wie o dobrej referencji na ten temat?

Amelio Vazquez-Reina
źródło

Odpowiedzi:

21

Są to sekwencje specjalne kodu sterującego ANSI, które są przesyłane po naciśnięciu różnych klawiszy niealfanumerycznych na klawiaturze „terminalowej”.

\ e oznacza znak ASCII „ESCAPE” (ósemkowy 033 w zapisie szesnastkowym 1B po przecinku 27). Który jest częścią wprowadzenia sekwencji poleceń (CSI).

Escape [ 2 ~to sekwencja znaków przesyłana po naciśnięciu klawisza oznaczonego „Insert” na terminalu VT220 (lub nowszym) .

Wiele z tych konwencji zostało przyjętych w oprogramowaniu, takim jak konsole / powłoki xterm i Linux - często rozszerzane na różne, czasem niekompatybilne sposoby.

Zastosowanie tych sekwencji w funkcji readline Bash jest opisane w stronach podręcznika dla readline

       W drugiej formie „keyseq”: nazwa-funkcji lub makro, keyseq różni się
       od keyname powyżej w tych ciągach oznaczających całą sekwencję klawiszy może
       być określone przez umieszczenie sekwencji w podwójnych cudzysłowach. Niektóre GNU
       Można używać klawiszy zmiany stylu Emacsa, jak w poniższym przykładzie, ale
       nazwy znaków symbolicznych nie są rozpoznawane.

          „\ Cu”: argument uniwersalny
          „\ Cx \ Cr”: re-read-init-file
          „\ e [11 ~”: „Klawisz funkcyjny 1”

Aby uzyskać listę sekwencji ucieczki odpowiadających klawiszom na klawiaturze, możesz użyć polecenia, takiego jak infocmp -L -1lubinfocmp -L -1 xterm

RedGrittyBrick
źródło
Doskonały!! To jest dokładnie to, czego szukałem. Dzięki @RedGrittyBrick!
Amelio Vazquez-Reina
+1. Szukałem Ctrlkodu w inputrc-> ENTER= Ctrl+ n.
rendon
@ user1133275: link zaktualizowany, ale polecenie man 3 readline w twoim systemie powinno dać ci te same informacje. Komenda man 3 readlinedziała również w WSL w systemie Windows 10 . JEŚLI jest to konieczne, możesz zadać nowe pytanie dotyczące określonych części bind -Pwyników, które powodują trudności.
RedGrittyBrick