所以我正在尋找一種方法來將Emacs鍵盤宏保存爲elisp代碼 - 用'insert-kbd-macro
所使用的Emacs鍵描述語言替換映射到宏鍵的實際函數。如何插入反斜槓?
在這樣做時,我一直在尋找第一個檢索映射到鍵的功能,其次是使這些功能作爲字符串寫入當前緩衝區
(symbol-name
(key-binding "\C-xo"))
將返回字符串"other-window"
但是,insert-kbd-macro
目前insert-kbd-macro
將宏保存爲插入符號(不是人類可讀的符號)(例如:^P
vs \C-p
)函數key-binding
似乎只接受可讀的符號。
所以在努力轉換爲人類可讀的符號,我看着功能key-description
(key-description "\346")
回報"M-f"
但是爲了通過key-binding
所接受,它需要符號的形式` 「\ MF」)
一個明顯的方式做這將是
(concat "\\" (key-description "\346")
但是emacs的永遠只能返回"\\"
不"\"
爲了弄清楚發生了什麼事情,我決定去看看什麼角色"\"
的原始字節顯示爲....
(byte-to-string 92)
它返回'\\'
我懷疑它可能是一個在elisp中的錯誤。
所以你實際上並不想插入一個反斜槓:)?請注意,^ M的代碼是13,並且不能從彙編\和M.獲取它。 –
實際上,我確實想插入一個反斜槓!你可以插入一個反斜槓嗎? – jones
是的,當然。只需鍵入反斜槓。順便說一下,'鍵綁定'爲我讀取一切。 –