Ich habe es gerade versucht
(set 'global-map (make-sparse-keymap))
Aber die Ausgabe C-hbzeigt immer noch jede Menge Mist, besonders im Abschnitt " Globale Bindungen ":
Global Bindings:
key binding
--- -------
C-@ set-mark-command
C-a move-beginning-of-line
C-b backward-char
C-d delete-char
C-e move-end-of-line
C-f forward-char
C-g keyboard-quit
C-h help-command
TAB indent-for-tab-command
C-k kill-line
C-l recenter-top-bottom
RET newline
C-n next-line
C-o open-line
... ...
und es werden noch so viele kommen.
Ich würde diese gerne komplett loswerden. Wie kann ich das möglicherweise in einem einfachen Funktionsaufruf tun? Ich möchte, dass die Lösung ein vollständiges Auslöschen ist und nicht eine Schleife, auf die alle diese Karten eingestellt sind nil
. Vielen Dank im Voraus.
HINWEIS: Bitte keine Lehrantworten oder Spam-Kommentare wie "Diese Schlüssel sind für die Produktivität unerlässlich, tun Sie das nicht!" . Ich habe hier eine stark angepasste Emulationsebene für die modale Textbearbeitung, daher benötige ich diese Standardbindungen überhaupt nicht.
key-bindings
keymap
Alexander Shukaev
quelle
quelle
evil-mode
dass Sie Ihre eigene modale Bearbeitungsebene schreiben müssen?evil-mode
, aber einige seiner Funktionen der obersten Ebene: Operatoren, Textobjekte und einige Befehle wurden irgendwie neu geschrieben oder erweitert. Die Standardbindungen wurden von Anfang an vollständig gelöscht und über die Tastatur neu angeordnet. Dies hat jedoch nichts mit der Frage zu tun.make-keymap
.Antworten:
Entnommen aus dem Emacs Lisp-Handbuch (siehe Steuern aktiver Karten ):
Um das Handbuch zu zitieren: "Es ist sehr ungewöhnlich, die globale Keymap zu ändern." Sicherheitshinweis: Stellen Sie sicher, dass Sie Puffer speichern und Emacs anschließend mit einer anderen Keymap sauber beenden können. Andernfalls müssen Sie sie ohne gespeicherte Änderungen beenden.
quelle
Obwohl die folgenden Informationen keine direkte Antwort auf die Frage sind (da sie bereits von @wasamasa beantwortet wurden), glaube ich immer noch, dass sie eine wesentliche Ergänzung der Antwort sind. Der Punkt ist, dass nach der Ausgabe
man löscht tatsächlich den Abschnitt Globale Bindungen vollständig aus und kann folglich nicht einmal mehr Text eingeben! In den allermeisten Fällen möchte man natürlich die Fähigkeit zur Eingabe von Text wiederherstellen, da dies für jeden Texteditor ohnehin unerlässlich ist. Hier ist der eine Weg, dies zu tun:
Nur damit ihr glaubt, dass dieser Emacs Lisp-Code ein korrekter Weg ist, werde ich die Quelle bereitstellen, aus der ich ihn erstellt habe. Standardmäßig ist die Möglichkeit zum Eingeben von Text mit der aktuellen 8-Bit-ASCII-Codepage in der
cmds.c
Übersetzungseinheit des Emacs C-Quellcodes implementiert :Wie Sie sehen können, ist der Emacs Lisp-Code oben die genaue Replikation dieses C-Codes, mit Ausnahme einer zusätzlichen Zeile:
Betrachten Sie es als eine Einschränkung, aber diese Linie ist wichtig zu haben! Andernfalls wären nur 7 Bit der aktuellen ASCII-Codepage verfügbar (unabhängig davon, dass wir alle 8 Bit initialisiert haben).
quelle
self-insert-command
Bindungen von der aktuellen globalen Keymap?(setq my-global-map (make-keymap)) (substitute-key-definition 'self-insert-command 'self-insert-command my-global-map global-map)
global-map
sofort wissen, mit welchem Problem sie konfrontiert werden und welches Rezept es zu lösen gilt. Sie werden wahrscheinlich etwas Neues über ASCII im Allgemeinen und / oder dessen Implementierung in Emacs im Besonderen erfahren.