TAB和<tab>有什么区别?


15

当我进入定义触发键的部分时,我正在阅读Yasnippet模式的文档

似乎Yasnippet次要模式使用以下命令定义了TAB要运行的密钥yas-expand

(define-key yas-minor-mode-map (kbd "<tab>") 'yas-expand)
(define-key yas-minor-mode-map (kbd "TAB") 'yas-expand)

<tab>和之间有什么区别TAB?(我试图用谷歌搜索,但找不到清晰的描述)

Answers:


9

尽管Emacs通常将<tab>(单个键)转换为 TABC-i),但是您可以绑定<tab> 和绑定TAB其他内容:

(global-set-key (kbd "<tab>") #'proced)
(global-set-key (kbd "TAB") #'indent-for-tab-command)

2
我知道了,但是为什么Yasnippet需要同时定义<tab>TAB
哈康Hægland

3
@HåkonHægland如果您碰巧将它们绑定到全局地图上的不同命令,则emacs会停止将它们转换为另一命令(即使在次要模式地图上也是如此),因此yasnippet会绑定两者以防万一。
Malabarba

1
@Malabarba因此,如果您同时定义<tab>TAB,则运行与之关联的命令的唯一方法TAB是键入C-i
哈康Hægland

2
如果您绑定<tab>的命令与绑定的命令不同TAB,那么在您按下“ Tab”键时所得到的内容取决于它发送给Emacs的内容/内容。如果它发送C-i(aka TAB),那么您将获得TAB绑定。如果发送,<tab>则您将获得其绑定。(是的,您可以随时点击C-i以获取TAB绑定。)
Drew

1
关于不同TAB键的更多历史信息StreakyCobra spacemacs github问题中给出。您可能需要在答案中包含一些信息。
哈康Hægland
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.