Emacs描述键期望输入什么?

问题描述 投票:2回答:2

我在Emacs的*scratch*中,然后尝试

(describe-key "C-x C-f")

我回来

"C - x SPC C - f is undefined"

显然,它无法识别我的C-x C-f速记。它期望什么?文档

显示由KEY调用的功能的文档。 KEY可以是任何一种键序列;它可以包括键盘事件,鼠标事件,和/或菜单事件。从程序调用时,将KEY作为字符串传递或向量。

没有详细说明应如何输入字符串或向量。我需要它做什么才能工作?

emacs keyboard-shortcuts elisp
2个回答
2
投票
如果您呼叫C-h f kbd,您将获得:

((kbd KEYS)

将密钥转换为内部Emacs密钥表示形式。 KEYS应该是由“ C-h k”(“ describe-key”)之类的命令返回的格式的字符串。

与用于保存键盘宏的格式相同(请参阅“ edmacro模式”。)


0
投票
description。

您真正按下的是[24 6]两个字符的向量(字符内部表示为整数,而24和6是表示Control-x和Control-f的整数)。描述这两个字符的向量的另一种方式是由两个字符组成的字符串:"\C-x\C-f"是一种方式,正如Alex Ott在其答案中指出的那样。等效地,"\x18\x6"使用24和6的十六进制值。或"\030\006"使用八进制值。

但是我们宁愿使用描述“ C-x C-f”,所以(正如Alex Ott再次在他的答案中指出的那样,kbd从描述转换为字符的实际序列:

(kbd "C-x C-f") --> "^X^F"

实际上是两个字符:Control-x和Control-f。 lisp打印机使用脱字符号表示法来表示它们,因此在引号之间看起来像是四个字符,但这就是它们的显示方式:如果在*scratch*缓冲区中执行上述操作,请将光标放在左引号上,然后按下向右箭头或C-f,您会发现引号之间只有两个字符。

[G0 Emacs Lisp手册的Character Type部分及其子部分中对此进行了详细说明。
© www.soinside.com 2019 - 2024. All rights reserved.