在哪裡可以找到在 bash 中重新映射快捷方式的終端鍵程式碼列表?
例如:
"\e[1;5C" "\e[Z" "\e-1\C-i"
我只知道點點滴滴,比如
\e
代表 escape 和C-
forCtrl
,但是這些數字 (1
) 和字母 (Z
) 是什麼?;
和[
標誌是什麼-
?是否只有反複試驗,或者是否有完整的 bash 鍵程式碼列表及其語法解釋?
這些是您按下給定鍵時終端發送的字元序列。與 bash 或 readline 本身無關,但如果您想配置
readline
在給定按鍵時執行某些操作,您將想知道給定鍵或組合鍵發送的字元序列。按鍵時
A
,一般終端會發送a
(0x61)字元。如果按<Ctrl-I>
or<Tab>
,則通常發送的^I
字元也稱為TAB
or\t
(0x9)。大多數功能鍵和導航鍵通常發送以 (control-[) 開頭的字元序列^[
,也稱為ESC
or\e
(0x1b, 033 octal),但確切的序列因終端而異。找出一個鍵或組合鍵為您的終端發送什麼的最佳方法是執行
sed -n l
並鍵入它,然後Enter
在鍵盤上鍵入。然後你會看到類似的東西:$ sed -n l ^[[1;5A \033[1;5A$
第一行是
echo
終端設備做的本地終端造成的(可能不可靠,終端設備設置會影響它)。第二行由 輸出
sed
。$
不包括在內,它只是為了告訴你行尾在哪裡。上面這意味著
Ctrl-Up
(我已經按下)發送 6 個字元ESC
,[
,1
,;
,5
和A
(0x1b 0x5b 0x31 0x3b 0x35 0x41)數據庫記錄多個終端的多個公共鍵的
terminfo
多個序列(基於$TERM
值)。例如:
TERM=rxvt tput kdch1 | sed -n l
會告訴您按鍵後發送的轉義序列是
rxvt
什麼Delete
。您可以使用目前終端查找與給定序列對應的鍵
infocmp
(此處假設ncurses
為 infocmp):$ infocmp -L1 | grep -F '=\E[Z' back_tab=\E[Z, key_btab=\E[Z,
像這樣的鍵組合
Ctrl-Up
在數據庫中沒有對應的條目terminfo
,因此要找出它們發送的內容,請閱讀相應終端的原始碼或文件,或者使用上述sed -n l
方法進行嘗試。