Обычно по историческим причинам emacs рассматривает TABкод и C-iключ как один и тот же, ср. документация по emacs lisp по функциональным клавишам или ответ abo-abo на вопрос "В чем разница между TAB и?" ,
Примечание: В этой статье, являются коды клавиш
TAB,<tab>иC-i; tabи Ctrl+ iс другой стороны - это физические клавиши на клавиатуре.Тем не менее, на данный момент, Emacs обрабатывает
TABиC-iто же самое, то есть(equal (kbd "TAB") (kbd "C-i"))->t.
Однако, поскольку мы больше не живем в камне вычислений, я нахожу это чрезвычайно раздражающим. Есть несколько предложений, что можно сделать, чтобы обойти это, например,
«Как связать команду с Ci, не меняя TAB?»
- Решение Трея у меня не сработало, переменная
local-function-key-mapsне изменилась. Изменение его для использования,deleteаdelqне в результате приводит к измененной переменной, но это не приводит к разрешению ... tabи Ctrl+ iвсе те же. - Перевод на гиперкарту кажется обходным решением 1980-х годов ... Я мог бы также использовать Hyper+ i.
- Решение Трея у меня не сработало, переменная
Использование
input-decode-mapto map Ctrl+ iк некоторому управляющему коду после ASCII - почти то, что я ищу. За исключением того, что он не работает должным образом сkbdмакросом, что означает, что нужно изменить все биты исходного кода, который будет связывать Ctrl+ i. Возможно, это лучшее решение, учитывая, что весь исходный код изменен правильно.Используя
(kbd "<tab>")для tabи(kbd "C-i")(что переводится(kbd "TAB")т.е.\tЛитерал) для Ctrl+ i делает работу , но вы должны изменить все исходные файлы , которые используют неправильный вид tab[читай: сканTAB] , который раздражает.
Это было предложено, например, в выпуске github, а также на emacs.sx .
Ни одно из этих решений не кажется реальным, я бы предпочел рассматривать их как обходные пути или хаки (из существующей ошибки ).
Есть ли способ заставить emacs отображаться tabна
(kbd "<tab>")и(kbd "TAB")пока Ctrl+ iотображается так, чтобы(kbd "C-i")не модифицировать исходный код emacs?Такой подход должен быть полностью невидимым для пользователя, а это означает , что , tabкак коды клавиши
<tab>иTABдолжно быть связанно с одним связывающих в то время как Ctrl+ , iкак клавиатурныеC-iследует сопоставить с другим обязательным.
На менее серьезном замечании: есть ли здесь разработчики emacs, которые могут прокомментировать, будет ли это когда-нибудь изменено / исправлено в исходном коде emacs?
kbdперевести TAB как [tab]. Это просто не будет работать для предустановленных частей Emacs.
TABиC-i(коды, а не ключи) являются одним и тем же по определениюTAB.