Antworten:
Das kannst du machen (define-key key-translation-map (kbd "ESC") (kbd "C-g")). Ich habe das vor langer Zeit getan und hatte keine Probleme.
Bearbeiten , um die Antwort gemäß den Kommentaren zu verbessern:
Wenn Sie die ESCSchlüsselfunktionalität beibehalten möchten , können Sie dies tun
(define-key key-translation-map (kbd "C-<escape>") (kbd "ESC"))
Eine Sache zu beachten ist, dass wenn Emacs hängt, Sie den C-gSchlüssel aus irgendeinem Grund immer noch verwenden müssen , aber das passiert selten.
C-ges aufzuhängen, die ESCNeuzuordnung in diesem Fall nicht funktioniert.
ESCalso hat mich das nicht gestört. Aber wenn Sie es brauchen, können Sie eine andere Übersetzung machen, zum Beispiel(define-key key-translation-map (kbd "C-<escape>") (kbd "ESC"))
Mein Rat wäre, in ESCRuhe zu lassen , weil es ein besonderer Schlüssel ist.
Standardmäßig verwendet Emacs ESC(ASCII 27) als meta-prefix-key. Aus dem Elisp-Handbuch:
'esc-map' ist die globale Keymap für den Präfixschlüssel. Somit finden sich hier tatsächlich die globalen Definitionen aller Metazeichen. Diese Karte ist auch die Funktionsdefinition des 'ESC-Präfix'.
und
Stattdessen werden Metazeichen zum Zwecke der Schlüsselsuche als Sequenzen von zwei Zeichen betrachtet, von denen das erste ESC ist (oder was auch immer derzeit der Wert von 'Meta-Präfix-Zeichen' ist). Somit wird der Schlüssel 'M-a' intern als 'ESC a' dargestellt, und seine globale Bindung befindet sich am Steckplatz für 'a' in 'esc-map'.
Um ESC für etwas anderes zu verwenden, müssten Sie etwas anderes festlegen meta-pefix-keyund auch einen anderen Schlüssel daran binden ESC-prefix. Möglicherweise sind auch andere Änderungen erforderlich - ich habe dies noch nie versucht.
Weitere Informationen finden meta-prefix-charSie unter Funktionen für die Schlüsselsuche im Elisp-Handbuch.
meta-prefix-charzu nilauf OSX wird nicht deaktivieren aus einem Präfix Schlüssel zu sein - es wird sie nur von der Meta - Taste trennen. Unter OSX mit einer grafischen Version von Emacs möchte ich, dass der Escape-Schlüssel vom Meta-Schlüssel getrennt wird. Ich habe ihn (setq meta-prefix-char nil)zu Beginn meiner Initialisierung festgelegt, damit alle anschließend geladenen Bibliotheken verstehen, was ich will. Dies gibt mir die Möglichkeit, den Metaschlüssel als Präfixschlüssel und den Escape-Schlüssel als Präfixschlüssel zu verwenden. Das esc-mapwird auf der C-Quellcode-Ebene innerhalb definiert keymap.c. Es soll als Präfixschlüssel verwendet werden.
esc-mapPräfix zu, um die Standard-M-Bindungen beizubehalten ?
(setq ns-alternate-modifier 'meta), wodurch Meta zur linken Alt-Taste auf der Apple-Tastatur wird. Ich verwende gerne die rechte Alt-Taste, um Unicode-Zeichen mit den OSX-Standardeinstellungen zu erstellen: (setq ns-right-alternate-modifier 'none)- um spanische Zeichen, Absatzsymbole usw. einzufügen. Beim Erstellen werden --with-nssowohl die linke als auch die rechte Alt-Taste auf Meta gesetzt. Die Standardeinstellung bindet den Escape-Schlüssel unter OSX mit dem Meta-Schlüssel meta-prefix-char, 27wie von Ihnen angegeben.
Schöne Antwort hier: https://superuser.com/a/945245/624661
Zitat:
Sie können dies in Ihrer Emacs-Init-Datei verwenden:
;;; esc always quits
(define-key minibuffer-local-map [escape] 'minibuffer-keyboard-quit)
(define-key minibuffer-local-ns-map [escape] 'minibuffer-keyboard-quit)
(define-key minibuffer-local-completion-map [escape] 'minibuffer-keyboard-quit)
(define-key minibuffer-local-must-match-map [escape] 'minibuffer-keyboard-quit)
(define-key minibuffer-local-isearch-map [escape] 'minibuffer-keyboard-quit)
(global-set-key [escape] 'keyboard-quit)
Sie möchten binden [escape], nicht (kbd "ESC"), wie die von Ole referenzierten Bindungen zeigen. Auf Lager funktioniert dies nur, wenn Emacs-Frames in einem Fenstersystem vorhanden sind. Ich denke, das ist eine Erklärung wert.
(kdb "ESC")bedeutet eigentlich das ASCII-Steuerzeichen ESC, und wie Glucas erwähnt hat, möchten Sie dieses sicherlich nicht neu zuordnen. Ist Escaber nicht ASCII ESC: Es ist ein Symbol escape, zumindest in einer grafischen Umgebung. Wie kommt es dann dazu, dass sich die Bindung (kbd "ESC")auswirkt Esc? Dies geschieht, weil emacs übersetzt escape, ESC wenn keine Bindung für verfügbar istescape . Eine Art Fallback, wenn Sie es wünschen (was mithilfe von implementiert wird, local-function-key-mapwenn Sie an solchen Dingen interessiert sind).
Wenn Sie also binden [escape], sind Sie in Sicherheit und müssen sich keine Sorgen machen ESC. Abgesehen von Ihren eigenen Bindungen müssen Sie nur die Keymaps erweitern, die angeben, ESCwann sie bedeuten [escape].
Hmm ... na ja, fast. Warum werden diese Karten nicht [escape]zum ersten Mal verwendet? Weil dies in einem Terminal nicht funktioniert. Wenn Sie Escan einem solchen Gerät arbeiten möchten , müssen Sie Ihr Terminal zumindest vorher anpassen .
Die Geschichte des Terminals wird in einem anderen Beitrag berichtet:
Wie bindet man C- [wirklich? . Sie müssen das Terminal anweisen, beim EscDrücken eine benutzerdefinierte Sequenz zu senden , und diese Sequenz dann [escape]zu einem frühen Zeitpunkt in emacs (the input-decode-map) zuordnen .
Hoffe das hilft.
universal-argumentmit dem verwendet wirduniversal-argument-map.