我在OS终端上使用emacs 24.3,遇到了一些奇怪的东西。
在markdown-mode.el中,选项卡键通过(define-key map (kbd "<tab>") 'markdown-cycle)绑定到密钥映射中的一个特定函数,但由于某种原因,它没有为我注册(虽然密钥映射的其他部分运行良好)。
解决这个问题的方法是将上面的<tab>更改为TAB。这在OS终端上有问题吗?有办法解决这个问题吗?我觉得这不应该发生。
发布于 2014-10-04 20:39:11
我认为标记模式应该使用TAB,而不是<tab>。
据我所知,<tab>是键盘上的Tab键,而TAB是control或ascii字符9(写的\t或\x09)。Tab键没有ascii值。
在GUI中,Emacs看到您按下Tab键(<tab>)并默认将其转换为GUI (TAB)。Emacs可以区分Tab和can,但是将Tab转换为can,除非您专门将<tab>绑定到其他东西(这是标记模式可以做到的)。
在终端中,终端将Tab键转换为C (ascii 9),而Emacs只看到C。Emacs无法区分这两者,因为它们都以C的身份出现。
同样的事情发生在<return>对RET (C,ascii 13)。
发布于 2014-10-04 21:42:37
使用TAB和define-key可以自动绑定键盘为标有"Tab“的键发送的任何事件,无论是ASCII TAB字符(也称为C-i (Control + i)或其他什么--包括Emacs编写的伪函数键<tab> )。
这可能不会在所有情况下都自动工作。如果它对您的特定键盘不起作用,那么使用C-h k并按下Tab键,找出它绑定到什么。无论Emacs告诉您什么是关键序列,请尝试绑定它。例如,如果它告诉您密钥序列是<foobar>,那么使用(kbd "<foobar>")。
但是在大多数情况下,您所需要做的就是使用(kbd "TAB") (或"\C-i"或[control ?i])。
https://stackoverflow.com/questions/26195884
复制相似问题