我在OS X终端中使用了emacs 24.3,并且遇到了一些奇怪的事情。
在markdown-mode.el中,tab键通过(define-key map (kbd "<tab>") 'markdown-cycle)
绑定到键映射中的特定函数,但由于某种原因,这不是为我注册的(虽然键映射的其他部分工作正常)。
在上面修改了<tab>
到TAB
的问题。这在OS X终端中有些不可思议吗?有没有办法来解决这个问题;我觉得这不应该发生。
答案 0 :(得分:4)
我认为降价模式应该使用TAB
,而不是<tab>
。
据我所知,<tab>
是键盘上的Tab 键,TAB
是control-I或ascii character 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。 Emacs无法区分这两者,因为它们都显示为C-i。
同样的事情发生在<return>
vs RET
(C-m,ascii 13)。
答案 1 :(得分:3)
将TAB
与define-key
一起使用时,应自动绑定键盘为标记为“Tab”的键发送的任何事件,无论它是ASCII TAB
字符,也称为{{1} }(Control + i)或其他 - 包括Emacs写的伪功能键C-i
。
在所有情况下,这可能无法自动生效。如果它对您的特定键盘不起作用,请使用<tab>
并按Tab键,找出它绑定的内容。无论Emacs告诉你什么是关键序列,尝试绑定它。例如,如果它告诉您密钥序列为C-h k
,则使用<foobar>
。
但在大多数情况下,您只需使用(kbd "<foobar>")
(或(kbd "TAB")
或"\C-i"
)。