Memahami karakter kontrol dalam .inputrc

21

Akun Linux saya di mesin jarak jauh dilengkapi dengan yang sudah ditentukan sebelumnya .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

Saya membaca GNU dokumentasi pesta pada topik , tapi saya belum dapat menemukan bagian yang menjelaskan apa urutan karakter \e[1~, \e[5C, \e\e[D, dll berarti.

Saya pikir saya membaca bahwa \ecara yang meta character(yang saya pikir Altdi keyboard), tapi tidak mengerti apa karakter kontrol lainnya [, ~, 5Ddll berarti.

Adakah yang tahu referensi yang bagus tentang topik ini?

Amelio Vazquez-Reina
sumber

Jawaban:

21

Ini adalah urutan pelarian kode kontrol ANSI yang ditransmisikan ketika berbagai tombol non-alfanumerik ditekan pada keyboard "terminal".

\ e berarti karakter ASCII "ESCAPE" (oktal 033 hex 1B desimal 27). Yang merupakan bagian dari pengenalan urutan perintah (CSI).

Escape [ 2 ~adalah urutan karakter yang dikirimkan ketika Anda menekan tombol berlabel "Sisipkan" pada terminal VT220 (atau lebih baru) .

Banyak dari konvensi ini telah diadopsi dalam perangkat lunak seperti xterm dan Linux console / shells - sering diperluas dalam berbagai cara, terkadang tidak sesuai.

Penggunaan urutan ini dalam fungsi READLINE bash dijelaskan di halaman manual untuk readline

       Dalam bentuk kedua, "keyseq": nama-fungsi atau makro, keyseq berbeda
       dari keyname di atas dalam string yang menunjukkan seluruh urutan kunci
       ditentukan dengan menempatkan urutan dalam tanda kutip ganda. Beberapa GNU
       Tombol keluar gaya Emacs dapat digunakan, seperti pada contoh berikut, tetapi
       nama karakter simbolis tidak dikenali.

          "\ Cu": argumen universal
          "\ Cx \ Cr": baca kembali file init
          "\ e [11 ~": "Tombol Fungsi 1"

Untuk mendapatkan daftar urutan pelepasan yang sesuai dengan tombol keyboard mana, Anda dapat menggunakan perintah seperti infocmp -L -1atauinfocmp -L -1 xterm

RedGrittyBrick
sumber
Luar biasa !! Itulah tepatnya yang saya cari. Terima kasih @RedGrittyBrick!
Amelio Vazquez-Reina
+1. Saya mencari Ctrlkode di inputrc-> ENTER= Ctrl+ n.
rendon
@ user1133275: tautan diperbarui tetapi perintah man 3 readline di sistem Anda sendiri harus memberi Anda informasi yang sama. Perintah ini man 3 readlinejuga berfungsi di WSL pada WIndows 10 . Jika perlu, Anda dapat mengajukan pertanyaan baru tentang bagian-bagian tertentu dari bind -Poutput yang menyebabkan Anda kesulitan.
RedGrittyBrick