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 ESC
Schlü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-g
Schlüssel aus irgendeinem Grund immer noch verwenden müssen , aber das passiert selten.
C-g
es aufzuhängen, die ESC
Neuzuordnung in diesem Fall nicht funktioniert.
ESC
also 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 ESC
Ruhe 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-key
und 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-char
Sie unter Funktionen für die Schlüsselsuche im Elisp-Handbuch.
meta-prefix-char
zu nil
auf 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-map
wird auf der C-Quellcode-Ebene innerhalb definiert keymap.c
. Es soll als Präfixschlüssel verwendet werden.
esc-map
Prä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-ns
sowohl 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
, 27
wie 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-map
wenn 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, ESC
wann 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-argument
mit dem verwendet wirduniversal-argument-map
.