Hiểu các ký tự điều khiển trong .inputrc


21

Tài khoản Linux của tôi trong một máy từ xa đi kèm với các định nghĩa trước được xác định trước .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

Tôi đọc tài liệu bash GNU về chủ đề này , nhưng tôi đã không thể tìm thấy một phần giải thích những gì các chuỗi ký tự \e[1~, \e[5C, \e\e[Dvv có ý nghĩa.

Tôi nghĩ rằng tôi đọc ở đâu đó rằng \ephương tiện các meta character(mà tôi nghĩ là Altở bàn phím của tôi), nhưng không hiểu những gì các ký tự điều khiển khác [, ~, 5D, vv bình.

Bất cứ ai cũng biết về một tài liệu tham khảo tốt về chủ đề này?

Câu trả lời:


21

Đây là các chuỗi thoát mã điều khiển ANSI được truyền khi các phím không chữ và số khác nhau được nhấn trên bàn phím "terminal".

\ e có nghĩa là ký tự "ESCAPE" của ASCII (bát phân 033 hex 1B thập phân 27). Đó là một phần của phần giới thiệu chuỗi lệnh (CSI).

Escape [ 2 ~là một chuỗi ký tự được truyền khi bạn nhấn phím có nhãn "Chèn" trên thiết bị đầu cuối VT220 (hoặc mới hơn) .

Nhiều quy ước trong số này đã được áp dụng trong các phần mềm như bảng điều khiển / shell xterm và Linux - thường được mở rộng theo nhiều cách khác nhau, đôi khi không tương thích.

Việc sử dụng những trình tự này trong chức năng readline bash được mô tả trong các trang người đàn ông cho readline

       Ở dạng thứ hai, "keyseq": tên hàm hoặc macro, keyseq khác nhau
       từ tên khóa ở trên trong chuỗi đó biểu thị toàn bộ chuỗi khóa có thể
       được chỉ định bằng cách đặt chuỗi trong dấu ngoặc kép. Một số GNU
       Có thể sử dụng lối thoát khóa kiểu Emacs, như trong ví dụ sau, nhưng
       tên nhân vật tượng trưng không được công nhận.

          "\ Cu": đối số phổ quát
          "\ Cx \ Cr": đọc lại tệp init
          "\ e [11 ~": "Phím chức năng 1"

Để có danh sách các chuỗi thoát tương ứng với phím bàn phím nào, bạn có thể sử dụng một lệnh như infocmp -L -1hoặcinfocmp -L -1 xterm


Thông minh!! Đó chính xác là những gì tôi đang tìm kiếm. Cảm ơn @RedGrittyBrick!
Amelio Vazquez-Reina

+1. Tôi đã tìm Ctrlmã trong inputrc-> ENTER= Ctrl+ n.
ám vào

@ user1133275: liên kết được cập nhật nhưng lệnh man 3 readline trên hệ thống của riêng bạn sẽ cung cấp cho bạn thông tin tương tự. Lệnh này man 3 readlinecũng hoạt động trong WSL trên WIndows 10 . NẾU cần thiết, bạn có thể hỏi một câu hỏi mới về các phần cụ thể của bind -Pđầu ra đang gây khó khăn cho bạn.
RedGrittyBrick
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.