<tab> v。emacs中的TAB </tab>

时间:2014-10-04 18:32:26

标签: macos emacs elisp

我在OS X终端中使用了emacs 24.3,并且遇到了一些奇怪的事情。

在markdown-mode.el中,tab键通过(define-key map (kbd "<tab>") 'markdown-cycle)绑定到键映射中的特定函数,但由于某种原因,这不是为我注册的(虽然键映射的其他部分工作正常)。

在上面修改了<tab>TAB的问题。这在OS X终端中有些不可思议吗?有没有办法来解决这个问题;我觉得这不应该发生。

2 个答案:

答案 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)

TABdefine-key一起使用时,应自动绑定键盘为标记为“Tab”的键发送的任何事件,无论它是ASCII TAB字符,也称为{{1} }(Control + i)或其他 - 包括Emacs写的伪功能键C-i

在所有情况下,这可能无法自动生效。如果它对您的特定键盘不起作用,请使用<tab>并按Tab键,找出它绑定的内容。无论Emacs告诉你什么是关键序列,尝试绑定它。例如,如果它告诉您密钥序列为C-h k,则使用<foobar>

但在大多数情况下,您只需使用(kbd "<foobar>")(或(kbd "TAB")"\C-i")。