Was ist der Unterschied zwischen TAB und <tab>?

15

Ich habe die Dokumentation zum Yasnippet-Modus gelesen, als ich zu dem Abschnitt kam, in dem die Auslösetaste definiert ist:

Es sieht so aus, als ob der Nebenmodus von Yasnippet den TABauszuführenden Schlüssel wie folgt definiert yas-expand:

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

Was ist der Unterschied zwischen <tab>und TAB? (Ich habe versucht, dies zu googeln, konnte jedoch keine eindeutige Beschreibung finden.)

Håkon Hægland
quelle

Antworten:

9

Obwohl Emacs normalerweise <tab>(den einzelnen Schlüssel) in TAB( C-i) übersetzt, können Sie <tab> und TABan verschiedene Dinge binden :

(global-set-key (kbd "<tab>") #'proced)
(global-set-key (kbd "TAB") #'indent-for-tab-command)
abo-abo
quelle
2
Ich verstehe, aber warum muss Yasnippet beide <tab>und definieren TAB?
Håkon Hægland
3
@ HåkonHægland Wenn Sie sie zufällig an verschiedene Befehle auf der Global-Map binden, werden sie von Emacs nicht mehr ineinander übersetzt (auch nicht in Nebenmodus-Maps).
Malabarba,
1
@Malabarba Also , wenn Sie definieren beide <tab>und TABder einzige Weg , um den Befehl auszuführen zugeordnet TABist zu geben C-i?
Håkon Hægland
2
Wenn Sie sich <tab>an einen anderen Befehl binden als TABan den, an den Sie sich binden , hängt das, was Sie beim Drücken der Tabulatortaste erhalten, davon ab, was an Emacs gesendet wird. Wenn es sendet C-i(aka TAB), dann bekommst du die TABBindung. Wenn es sendet, erhalten <tab>Sie seine Bindung. (Und ja, Sie können immer drücken C-i, um die TABBindung zu erhalten.)
Drew
1
Weitere historische Informationen zu den verschiedenen TABSchlüsseln finden Sie StreakyCobrain dieser Spacemacs Github-Ausgabe. Möglicherweise möchten Sie einige dieser Informationen in Ihre Antwort aufnehmen.
Håkon Hægland