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)

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)

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
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.