Terminal

反向控制程式碼查找終端

  • November 3, 2016

我的理解是終端經常使用 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而不是\eor ^[

例如,要查找\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變數設置為匹配,事情會變得更容易。

引用自:https://unix.stackexchange.com/questions/11205