如何以人類可讀的形式列印鍵盤快捷鍵?
擁有一種使用者友好的方式來獲得目前定義的鍵盤快捷鍵的概述將非常有用。換句話說,給定
/etc/inputrc
行"\e[A": history-search-backward "\e[11~": backward-word
和
~/.inputrc
線條"\e[A": kill-word "\e\eOD": backward-word
不必遍歷這兩個文件來確定
\e[A
已被覆蓋,有兩個替代快捷方式backward-word
,這\e\eOD
意味著……無論它意味著什麼,這kill-word
實際上意味著刪除到目前(或下)字。理想的解決方案將列印類似Delete until next word boundary: Meta-A Go to the previous word boundary: F1; Ctrl-Left Search history backwards: Meta-Up
(希望對轉義序列有更好理解的人可以修復快捷方式。)
有Linux程序來列印這個嗎?
我猜這樣的程序可能是作業系統,核心,甚至是鍵盤相關的,所以它可能需要廣泛的配置(一個通過
showkey
或xev
按雜項鍵來輪詢使用者以確定真正發送的轉義序列的程序,例如),但對於最終了解如何有效使用終端快捷方式來說,這是一個可以接受的價格。
簡短的回答是否定的,我很確定不存在這樣的程序。
您原則上可以建構一個;它必須查看 readline 配置和終端仿真器(不涉及核心和硬體)。
bind -P | grep 'can be found'
在 Bash 中列出了鍵綁定。abort can be found on "\C-g", "\C-x\C-g", "\e\C-g". accept-line can be found on "\C-j", "\C-m".
要為命令提供更具描述性的名稱,您需要解析 bash 或 readline 文件。
按鍵序列和按鍵之間的對應關係由終端(通常是終端仿真器)決定。它通常不容易獲得,並且當它是獲取它的方法時,它完全特定於終端。
您可以在 Emacs 中接近:
emacs -q -nw
在終端中啟動,然後按Ctrl
+H
,C
(describe-key-briefly
命令),然後按順序鍵(\e
isEscape
)。這將向您顯示重構的功能鍵(如果有)以及該鍵在 Emacs 中的作用。Readline 的預設綁定受到 Emacs 的強烈啟發,因此 Emacs 中的函式通常與 readline 中的函式相似,但並非總是如此。例子:Ctrl+H C ESC [ A <up> runs the command previous-line