在emacs中,v键有什么作用?

5
我在OS X终端中使用Emacs 24.3,并遇到了一些奇怪的问题。
在markdown-mode.el中,通过(define-key map (kbd "<tab>") 'markdown-cycle)将Tab键绑定到键映射中的特定函数,但出现了一个问题:这个绑定对我不起作用(尽管键映射的其他部分正常工作)。
解决方法是将上述代码中的<tab>更改为TAB。这是否是OS X终端的问题?有没有办法解决这个问题?我觉得这不应该发生。

2
听起来像是Markdown模式中的一个错误。似乎该模式应该绑定(kbd "TAB")而不是(kbd "<tab>")。考虑向库维护者提交错误报告。 - Drew
2个回答

6
我认为markdown-mode应该使用TAB而不是<tab>
据我所知,<tab>是键盘上的Tab键,而TAB是控制I,或ASCII字符9(写作\t\x09)。Tab键没有ASCII值。
在GUI Emacs中,Emacs看到您按下了Tab键(<tab>),并默认将其转换为C-i(TAB)。Emacs可以区分Tab和C-i,但会将Tab转换为C-i,除非您专门将<tab>绑定到其他内容(markdown-mode这样做)。
在终端中,终端将Tab键转换为C-i(ASCII 9),而Emacs仅看到C-i。由于它们都显示为C-i,因此Emacs无法区分两者。
<return>相同的情况发生在RET(C-m,ASCII 13)与之间的差异。

4
使用 define-key 时,使用 TAB 应该自动绑定键盘发送的标有“Tab”标签的任何事件,无论是 ASCII TAB 字符(也称为 C-i(Control + i))还是其他内容 - 包括 Emacs 写作伪函数键 <tab>
这种方法可能不会在所有情况下自动工作。如果对于您特定的键盘无法正常工作,则可以使用 C-h k 并按下 Tab 键,以查找其绑定的内容。Emacs 告诉您的任何键序列都需要进行绑定。例如,如果它告诉您键序列是 <foobar>,则使用 (kbd "<foobar>")
但在大多数情况下,您只需要使用 (kbd "TAB")(或 "\C-i"[control ?i])。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接