Чим відрізняється TAB від <tab>?


15

Я читав документацію в режимі Yasnippet, коли перейшов до розділу, де визначено тригерну клавішу:

Схоже, мінорний режим Yasnippet визначає TABключ для запуску yas-expandза допомогою:

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

У чому різниця між <tab>і TAB? (Я спробував google це, але я не зміг знайти чіткого опису)

Відповіді:


9

Хоча Emacs зазвичай перекладається <tab>(єдиний ключ) до TAB( C-i), ви можете пов'язати <tab> і TABдо різних речей:

(global-set-key (kbd "<tab>") #'proced)
(global-set-key (kbd "TAB") #'indent-for-tab-command)

2
Я бачу, але чому Yasnippet потрібно визначати як <tab>і TAB?
Håkon Hægland

3
@ HåkonHægland, якщо вам трапляється прив'язувати їх до різних команд на глобальній карті, emacs перестає переводити одну на іншу (навіть на карти другорядних режимів), тому yasnippet прив'язує обидва на всякий випадок.
Малабарба

1
@Malabarba Отже, якщо ви визначаєте <tab>і те TAB, і єдиний спосіб запустити пов'язану команду TAB- це набрати C-i?
Håkon Hægland

2
Якщо ви прив'язуєте <tab>до іншої команди, ніж те, що ви прив'язуєте TAB, то те, що ви отримуєте при натисканні клавіші "Tab", залежить від того, яке / що воно надсилає до Emacs. Якщо він надсилає C-i(ака TAB), то ви отримуєте TABприв'язку. Якщо він надсилає, <tab>то ви отримуєте його прив'язку. (І так, ви завжди можете натиснути, C-iщоб отримати TABприв'язку.)
Дрю

1
Більше історичних відомостей про різні TABключі наведено StreakyCobraв цьому випуску github Spacemacs. Ви можете включити частину цієї інформації у свою відповідь.
Håkon Hægland
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.