Normalerweise behandelt emacs aus historischen Gründen TABden C-iSchlüsselcode und den Schlüssel gleich, vgl. die emacs-lisp-dokumentation auf funktionstasten oder abo-abos antwort auf die frage "Was ist der unterschied zwischen TAB und?" .
HINWEIS: In diesem Beitrag keycodes sind
TAB,<tab>undC-i; tabund Ctrl+ idagegen sind die physischen Tasten auf der Tastatur.Im Moment behandelt der Emacs jedoch das
TABundC-ials dasselbe, dh(equal (kbd "TAB") (kbd "C-i"))->t.
Da wir jedoch nicht länger in der Steinzeit des Rechnens leben, finde ich das äußerst ärgerlich. Es gibt ein paar Vorschläge, wie Sie das umgehen können, z
"Wie binde ich einen Befehl an Ci, ohne TAB zu ändern?"
- Trey's Solution hat bei mir nicht funktioniert, die Variable
local-function-key-mapswird nicht geändert. Wenn Sie es ändern, um es zu verwenden,deleteanstatt es zu ändern, wird diedelqVariable geändert, aber es wird keine Auflösung erzielt ... tabund Ctrl+ isind immer noch gleich. - Das Übersetzen in die Hyper-Map scheint eine Problemumgehung aus den 1980er Jahren zu sein ... Vielleicht möchte ich auch Hyper+ verwenden i.
- Trey's Solution hat bei mir nicht funktioniert, die Variable
Das Zuordnen
input-decode-mapvon Ctrl+ izu einem Post-ASCII-Steuercode ist fast das, wonach ich suche. Außer dass es mit demkbdMakro nicht richtig funktioniert, was bedeutet, dass man alle Bits des Quellcodes ändern muss, die Ctrl+ binden i. Dies ist wahrscheinlich die beste Lösung, da der gesamte Quellcode ordnungsgemäß geändert wurde.Die Verwendung von
(kbd "<tab>")for tabund(kbd "C-i")(das(kbd "TAB")heißt, das\tLiteral) für Ctrl+ i funktioniert, aber Sie müssen alle Quelldateien ändern , die die falsche Art von tab[Read: the keycodeTAB] verwenden, was ärgerlich ist.
Dies wurde z. B. in einer Github-Ausgabe und auch auf emacs.sx vorgeschlagen .
Keine dieser Lösungen scheint eine echte Lösung zu sein, ich würde sie eher als Workarounds oder Hacks (des vorhandenen Fehlers ) betrachten.
Gibt es eine Möglichkeit gibt , zu zwingen , Emacs zur Karte tabzu
(kbd "<tab>")und(kbd "TAB")während Ctrl+ izugeordnet wird(kbd "C-i")kurz die Emacs - Quellcode Modyfing?Dieser Ansatz sollte für den Benutzer vollständig unsichtbar sein, was bedeutet, dass die tabgleichen Schlüsselcodes
<tab>undTABeiner Bindung zugeordnet werden sollten, während der Ctrl+ igleiche SchlüsselcodeC-ieiner anderen Bindung zugeordnet werden sollte.
Weniger ernst gemeint: Gibt es hier Emacs-Entwickler, die kommentieren können, ob dies irgendwann im Emacs-Quellcode geändert / behoben wird?
kbd, TAB als [tab] zu übersetzen. Für die vorinstallierten Teile von Emacs funktioniert das einfach nicht.
TABundC-i(die Codes, nicht die Schlüssel) per definitionem ein und dasselbe sindTAB.