Terminal
為 Ctrl-’ 查找 OS X 終端組合鍵/轉義序列
我的 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-map
Emacs 通過或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 ?\')])