¿Cuál es la diferencia entre TAB y <tab>?

15

Estaba leyendo la documentación para el modo Yasnippet, cuando llegué a la sección donde se define la clave de activación:

Parece que el modo menor Yasnippet define la TABclave para ejecutar yas-expandusando:

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

¿Cuál es la diferencia entre <tab>y TAB? (Traté de googlear esto pero no pude encontrar una descripción clara)

Håkon Hægland
fuente

Respuestas:

9

Aunque Emacs generalmente traduce <tab>(la clave única) a TAB( C-i), puede vincular <tab> y TABa diferentes cosas:

(global-set-key (kbd "<tab>") #'proced)
(global-set-key (kbd "TAB") #'indent-for-tab-command)
abo-abo
fuente
2
Ya veo, pero ¿por qué Yasnippet necesidad de definir tanto <tab>y TAB?
Håkon Hægland
3
@ HåkonHægland si los vincula a diferentes comandos en el mapa global, emacs deja de traducir uno a otro (incluso en mapas de modo menor), por lo que yasnippet une ambos por si acaso.
Malabarba
1
@Malabarba Entonces, si define ambos <tab>y TAB, ¿la única forma de ejecutar el comando asociado TABes escribir C-i?
Håkon Hægland
2
Si se vincula <tab>a un comando diferente al que se vincula TAB, lo que obtiene cuando presiona la tecla "Tab" depende de qué / qué envía a Emacs. Si envía C-i(aka TAB), entonces obtienes el TABenlace. Si envía <tab>, obtienes su enlace. (Y sí, siempre puedes golpear C-ipara obtener la TABencuadernación.)
Dibujó
1
Más información histórica acerca de los diferentes TABentrega las llaves StreakyCobraen este tema spacemacs GitHub. Es posible que desee incluir parte de esa información en su respuesta.
Håkon Hægland