Apa perbedaan antara TAB dan <tab>?

15

Saya membaca dokumentasi untuk mode Yasnippet, ketika saya datang ke bagian di mana tombol pemicu didefinisikan:

Sepertinya mode minor Yasnippet menentukan TABkunci untuk menjalankan yas-expandmenggunakan:

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

Apa perbedaan antara <tab>dan TAB? (Saya mencoba google ini tetapi saya tidak dapat menemukan deskripsi yang jelas)

Håkon Hægland
sumber

Jawaban:

9

Meskipun Emacs biasanya menerjemahkan <tab>(tombol tunggal) ke TAB( C-i), Anda dapat mengikat <tab> dan TABke berbagai hal:

(global-set-key (kbd "<tab>") #'proced)
(global-set-key (kbd "TAB") #'indent-for-tab-command)
abo-abo
sumber
2
Saya mengerti, tetapi mengapa Yasnippet perlu mendefinisikan keduanya <tab>dan TAB?
Håkon Hægland
3
@ HåkonHægland jika Anda mengikatnya ke perintah yang berbeda di peta-global, emacs berhenti menerjemahkan satu ke yang lain (bahkan pada peta mode minor), jadi yasnippet mengikat keduanya untuk jaga-jaga.
Malabarba
1
@ Malabarba Jadi jika Anda mendefinisikan keduanya <tab>dan TAB, satu-satunya cara untuk menjalankan perintah yang terkait dengan TABmengetik C-i?
Håkon Hægland
2
Jika Anda mengikat <tab>perintah yang berbeda dari yang Anda ikat TAB, maka apa yang Anda dapatkan saat menekan tombol "Tab" tergantung pada mana / apa yang dikirim ke Emacs. Jika mengirim C-i(alias TAB) maka Anda mendapatkan TABpengikatan. Jika mengirim <tab>maka Anda mendapatkan pengikatannya. (Dan ya, Anda selalu dapat menekan C-iuntuk mendapatkan TABikatan.)
Drew
1
Informasi historis lebih lanjut tentang TABkunci yang berbeda diberikan oleh StreakyCobradalam masalah github ruang ini . Anda mungkin ingin memasukkan beberapa informasi itu dalam jawaban Anda.
Håkon Hægland