Terminal
反向控制程式碼查找終端
我的理解是終端經常使用 ANSI 控制程式碼來表示非字母數字字元序列。例如,
.inputrc
在 Linux 中為 Bash 進行編輯時,很容易找到如下所示的程式碼序列:"\e[A": history-search-backward "\e[B": history-search-forward "\e[C": forward-char "\e[D": backward-char "\e[1~": beginning-of-line "\e[4~": end-of-line "\e[3~": delete-char "\e[2~": quoted-insert "\e[5C": forward-word "\e[5D": backward-word
上面的命令定義
history-search-backward
了 Bash 命令等的鍵綁定。現在,在 bash 中,我可以
read
用來查看在我的鍵盤中鍵入的字元是如何映射到 ANSI 控制程式碼的。例如,如果我執行read
,然後輸入Ctrl-P
,我得到:^P
。同樣,如果我輸入Alt-W
,我會得到:^[W
。我的問題是:是否有相反的程序、工具或網站?即一個工具,它輸出或顯示我需要在我的鍵盤上鍵入以獲得給定的ANSI控制程式碼序列的鍵盤鍵序列。例如輸入
^[W
應該輸出:Alt-W
謝謝!
infocmp
可以幫助。它將 escape 寫成\E
而不是\e
or^[
。例如,要查找
\e[A
,這是您的歷史搜尋向後:$ infocmp -1x | grep -F '=\E[A,' cuu1=\E[A, $ man 5 terminfo | grep ' cuu1 ' cursor_up cuu1 up up one line
它告訴您向上按游標,也就是向上箭頭。
請注意,您將需要
-x
標誌(如上所示)來顯示一些組合,例如Ctrl
+<-
。這些擴展鍵不是標準的一部分,因此它們沒有列在 terminfo 手冊頁中,但它們記錄在terminfo 文件中。
另請注意,控制序列因您使用的終端而異。
infocmp -1x <terminal>
您可以使用, 例如infocmp -1x rxvt
,infocmp -1x putty
等來獲取有關不同終端的資訊。一旦你弄清楚你認為你有哪一個 terminfo,如果你將
TERM
變數設置為匹配,事情會變得更容易。