Zwykle ze względów historycznych emacs traktuje TABkod i C-iklucz tak samo, por. dokumentacja emacs lisp na klawiszach funkcyjnych lub odpowiedź abo-abo na pytanie „Jaka jest różnica między TAB a?” .
UWAGA: W tym poście są kody klawiszy
TAB,<tab>orazC-i; tabi Ctrl+ iz drugiej strony są fizycznymi klawiszami na klawiaturze.Jednak w tej chwili emacs traktuje to samo
TABiC-ito samo, tj.(equal (kbd "TAB") (kbd "C-i"))->t.
Ponieważ jednak nie żyjemy już w branży komputerowej, jest to niezwykle denerwujące. Istnieje kilka sugestii, które można zrobić, aby obejść ten problem, np
„Jak powiązać polecenie z Ci bez zmiany TAB?”
- Rozwiązanie Treya nie działało dla mnie, zmienna
local-function-key-mapssię nie zmienia. Zmodyfikowanie go w celu użyciadeletezamiastdelqskutkuje modyfikacją zmiennej, ale nie przynosi rozwiązania ... tabi Ctrl+ isą nadal takie same. - Tłumaczenie na hiper mapę wydaje się obejściem z lat 80. XX wieku ... Chciałbym również użyć Hyper+ i.
- Rozwiązanie Treya nie działało dla mnie, zmienna
Użycie
input-decode-mapmapowania Ctrl+ ido kodu sterującego post-ASCII jest prawie tym, czego szukam. Tyle że nie działa poprawnie zkbdmakrem, co oznacza, że należy zmodyfikować wszystkie bity kodu źródłowego, które będą wiązały Ctrl+ i. Prawdopodobnie jest to najlepsze rozwiązanie, biorąc pod uwagę, że cały kod źródłowy jest odpowiednio zmodyfikowany.Używanie
(kbd "<tab>")for tabi(kbd "C-i")(co oznacza(kbd "TAB")np.\tDosłowność) dla Ctrl+ i działa, ale trzeba zmodyfikować wszystkie pliki źródłowe, które używają niewłaściwego rodzaju tab[Czytaj: kod kluczaTAB], co jest denerwujące.
Zasugerowano to np. W kwestii github i na emacs.sx .
Żadne z tych rozwiązań nie wydaje się prawdziwymi rozwiązaniami, wolę raczej rozważyć obejścia lub włamania (istniejącego błędu ).
Czy istnieje sposób, aby tam wymusić emacs mapować tabdo
(kbd "<tab>")i(kbd "TAB")podczas Ctrl+ isą odwzorowywane na(kbd "C-i")krótki modyfing kod źródłowy emacs?To podejście powinno być całkowicie niewidoczne dla użytkownika, co oznacza, że tabpodobne kody
<tab>iTABpowinny być mapowane na jedno wiązanie, podczas gdy podobny kod Ctrl+ powinien być imapowanyC-ina inne powiązanie.
Z mniej poważnej uwagi: czy są tu programiści emacsa, którzy mogą komentować, czy w pewnym momencie zostanie to zmienione / naprawione w kodzie źródłowym emacs?
kbdprzetłumaczenia TAB jako [tab]. To po prostu nie zadziała dla wstępnie załadowanych części Emacsa.
TABiC-i(kody, nie klucze) są takie same z definicjiTAB.