因此,我一直在寻找一种将 Emacs 键盘宏保存为 elisp 代码的方法 - 将 Emacs 键描述语言替换'insert-kbd-macro
为映射到宏键的实际功能。
在这样做时,我首先查看了检索映射到键的函数,然后将这些函数呈现为要写入当前缓冲区的字符串
(symbol-name
(key-binding "\C-xo"))
将返回字符串"other-window"
然而,目前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中的一个错误。