Terminal

為 Ctrl-’ 查找 OS X 終端組合鍵/轉義序列

  • September 12, 2015

我的 Emacs 鍵綁定之一是C-',它在 GUI 中執行良好。然而,在終端中,它沒有被辨識。我知道我需要找出發送到終端的實際字元並將其C-'映射到 emacs 配置中。

遵循在哪裡可以找到終端鍵程式碼列表以在 bash 中重新映射快捷方式的建議?sed -n l是回到我的一個空行,即使沒有結尾$。終端根本不辨識C-'序列嗎?

終端傳輸字節,而不是密鑰。Ctrl+之類的鍵弦'必須被編碼為字節序列。除了沒有修飾符或只有 的可列印字元之外Shift,大多數鍵弦沒有對應的字元,而是作為轉義序列傳輸,以轉義字元(字節值為 27 的字元,您可以像\e在 Emacs 字元串中一樣編寫)開頭。但是許多鍵弦沒有傳統的標準轉義序列,並且許多終端要麼不傳輸這些鍵弦,要麼剝離有關修飾符的資訊(僅將Ctrl+'作為'字元傳輸)。

某些終端允許您為每個鍵弦配置轉義序列。在 Terminal.app 中,您可以通過鍵盤首選項執行此操作

對於Ctrl+ ',選擇\033[39;5~\033[27;5;39~:這是兩個新興標準,libtermkey 方案和 xterm 方案。有關更多資訊,請參閱使用終端時的鍵綁定問題

input-decode-mapEmacs 通過或local-function-key-map(或function-key-map在 Emacs 23 之前)將轉義序列轉換為其內部鍵表示。將其中任何一個放入您的 init 文件中:

(define-key input-decode-map "\033[39;5~" [(control ?\')])
(define-key input-decode-map "\033[27;5;39~" [(control ?\')])

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