Quelle est la différence entre TAB et <tab>?

15

Je lisais la documentation du mode Yasnippet, quand je suis arrivé à la section où la clé de déclenchement est définie:

Il semble que le mode mineur de Yasnippet définit la TABclé à exécuter en yas-expandutilisant:

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

Quelle est la difference entre <tab>et TAB? (J'ai essayé de google, mais je n'ai pas pu trouver de description claire)

Håkon Hægland
la source

Réponses:

9

Bien qu'Emacs traduise généralement <tab>(la clé unique) en TAB( C-i), vous pouvez lier <tab> et TABà différentes choses:

(global-set-key (kbd "<tab>") #'proced)
(global-set-key (kbd "TAB") #'indent-for-tab-command)
abo-abo
la source
2
Je vois, mais pourquoi Yasnippet doit-il définir les deux <tab>et TAB?
Håkon Hægland
3
@ HåkonHægland s'il vous arrive de les lier à différentes commandes sur la carte globale, emacs arrête de se traduire les unes aux autres (même sur les cartes en mode mineur), donc yasnippet lie les deux juste au cas où.
Malabarba
1
@Malabarba Donc, si vous définissez les deux <tab>et TAB, la seule façon d'exécuter la commande associée à TABest de taper C-i?
Håkon Hægland
2
Si vous vous liez <tab>à une commande différente de celle à laquelle vous vous liez TAB, alors ce que vous obtenez lorsque vous appuyez sur la touche "Tab" dépend de ce qu'il envoie à Emacs. S'il envoie C-i(aka TAB) alors vous obtenez la TABliaison. S'il envoie, <tab>vous obtenez sa liaison. (Et oui, vous pouvez toujours frapper C-ipour obtenir la TABreliure.)
Drew
1
Plus d'informations historiques sur les différentes TABclés sont fournies par StreakyCobradans ce numéro de github spacemacs. Vous voudrez peut-être inclure certaines de ces informations dans votre réponse.
Håkon Hægland,