Jaka jest różnica między TAB a <tab>?

15

Czytałem dokumentację dotyczącą trybu Yasnippet, kiedy doszedłem do sekcji, w której zdefiniowano klucz aktywujący:

Wygląda na to, że tryb pomocniczy Yasnippet określa TABklucz do uruchomienia yas-expandza pomocą:

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

Jaka jest różnica między <tab>i TAB? (Próbowałem google go, ale nie mogłem znaleźć jasnego opisu)

Håkon Hægland
źródło

Odpowiedzi:

9

Chociaż Emacs zwykle tłumaczy <tab>(pojedynczy klucz) na TAB( C-i), możesz powiązać <tab> i TABróżne rzeczy:

(global-set-key (kbd "<tab>") #'proced)
(global-set-key (kbd "TAB") #'indent-for-tab-command)
abo-abo
źródło
2
Rozumiem, ale dlaczego Yasnippet musi zdefiniować jedno <tab>i drugie TAB?
Håkon Hægland
3
@ HåkonHægland, jeśli zdarzy ci się powiązać je z różnymi poleceniami na mapie globalnej, emacs przestanie tłumaczyć jedno na drugie (nawet na mapach trybu mniejszego), więc na wszelki wypadek yasnippet wiąże oba.
Malabarba
1
@Malabarba Jeśli więc zdefiniujesz jedno <tab>i drugie TAB, jedynym sposobem na uruchomienie polecenia z nim związanego TABjest wpisanie C-i?
Håkon Hægland
2
Jeśli powiążesz <tab>z innym poleceniem niż to, z czym się wiąże TAB, to co otrzymasz po naciśnięciu klawisza „Tab” zależy od tego, co / co wysyła do Emacsa. Jeśli wyśle C-i(aka TAB), otrzymasz TABpowiązanie. Jeśli wyśle <tab>, otrzymasz wiążące. (I tak, zawsze możesz trafić, C-iaby uzyskać TABwiązanie.)
Drew
1
Więcej informacji historycznych na temat różnych TABkluczy podano StreakyCobraw tym numerze github dotyczącym znaków kosmicznych. Możesz chcieć zawrzeć niektóre z tych informacji w swojej odpowiedzi.
Håkon Hægland