Réponses:
Tu peux le faire (define-key key-translation-map (kbd "ESC") (kbd "C-g"))
. J'ai fait la même chose il y a longtemps et je n'ai eu aucun problème.
Modifiez pour améliorer la réponse en fonction des commentaires:
Si vous souhaitez conserver la ESC
fonctionnalité clé, vous pouvez le faire
(define-key key-translation-map (kbd "C-<escape>") (kbd "ESC"))
Une chose à noter est que si Emacs se bloque, vous devez toujours utiliser la C-g
clé pour une raison quelconque, mais cela se produit rarement.
C-g
pour le détacher, le ESC
remappage ne fonctionne pas dans ce cas.
ESC
donc cela ne m'a pas dérangé. Mais si vous en avez besoin, vous pouvez faire une autre traduction, par exemple(define-key key-translation-map (kbd "C-<escape>") (kbd "ESC"))
Mon conseil serait de partir ESC
seul, car c'est une clé spéciale.
Par défaut, Emacs utilise ESC
(ASCII 27) comme meta-prefix-key
. Dans le manuel Elisp:
'esc-map' est le clavier global pour la clé de préfixe. Ainsi, les définitions globales de tous les méta-caractères se trouvent réellement ici. Cette carte est également la définition de fonction du «préfixe ESC».
et
Au lieu de cela, les méta-caractères sont considérés aux fins de la recherche de clés comme des séquences de deux caractères, dont le premier est ESC (ou quelle que soit actuellement la valeur de «meta-prefix-char»). Ainsi, la clé «M-a» est représentée en interne comme «ESC a», et sa liaison globale se trouve à l'emplacement pour «a» dans «esc-map».
Donc, pour utiliser ESC pour autre chose, vous devez définir meta-pefix-key
quelque chose d'autre et également lier une autre clé ESC-prefix
. D'autres changements peuvent également être nécessaires - je n'ai jamais essayé cela.
Pour plus d'informations meta-prefix-char
, voir Fonctions de recherche de touches dans le manuel Elisp.
meta-prefix-char
à nil
OSX sera pas le désactiver d'être une clé de préfixe - ce qu'il ne séparera de la clé de méta. Sur OSX avec une version graphique d'Emacs, j'aime que la touche d'échappement soit séparée de la méta-clé - je l'ai définie (setq meta-prefix-char nil)
au début de mon initialisation pour que toutes les bibliothèques chargées par la suite comprennent ce que je veux. Cela me donne la possibilité d'utiliser la méta-clé comme clé de préfixe et la touche d'échappement comme clé de préfixe. Le esc-map
est défini au niveau du code source C dans keymap.c
. Il est destiné à être utilisé comme clé de préfixe.
esc-map
préfixe pour conserver les liaisons M par défaut?
(setq ns-alternate-modifier 'meta)
ce qui fait de la méta la touche alt gauche du clavier Apple. J'aime utiliser la touche alt droite pour créer des caractères unicode en utilisant les paramètres par défaut OSX: (setq ns-right-alternate-modifier 'none)
- pour insérer des caractères espagnols, des symboles de paragraphe, etc. Lors de la construction --with-ns
, les touches alt gauche et droite sont définies sur meta. Le paramètre par défaut lie la touche d'échappement à la méta-clé sur OSX à l'aide de la meta-prefix-char
, 27
comme vous l'avez indiqué.
Belle réponse ici: https://superuser.com/a/945245/624661
Citant:
Vous pouvez l'utiliser dans votre fichier init Emacs:
;;; 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)
Vous voulez lier [escape]
, pas (kbd "ESC")
, comme le montrent les liaisons référencées par Ole . En stock, cela ne fonctionnera que si des cadres emacs dans un système de fenêtre. Je pense que cela mérite un peu d'explication.
(kdb "ESC")
signifie en fait le caractère de contrôle ASCII ESC
, et comme les glucas l'ont mentionné, vous ne voulez certainement pas remapper celui-ci. Mais ce Escn'est pas ASCII ESC
: c'est un symbole escape
, du moins dans un environnement graphique. Comment se fait-il que la liaison (kbd "ESC")
affecte Escalors? Cela se produit car emacs se traduit escape
par ESC
s'il n'y a pas de liaison disponible pourescape
. Une sorte de solution de rechange si vous le souhaitez (qui est implémentée par le biais de local-function-key-map
si vous êtes intéressé par de telles choses).
Ainsi, lorsque vous vous attachez [escape]
, vous êtes en sécurité et n'avez pas à vous soucier ESC
; en dehors de vos propres liaisons, il vous suffit d'augmenter les keymaps qui disent ESC
quand ils signifient [escape]
.
Hmm ... enfin presque. Pourquoi ces cartes ne sont-elles pas utilisées [escape]
pour la première fois? Parce que cela ne fonctionnera pas dans un terminal. Si vous souhaitez Esctravailler sur un tel appareil, vous devrez au moins personnaliser votre terminal avant.
L'histoire du terminal est rapportée dans un autre article:
Comment lier C- [pour de vrai? . Ce que vous devez faire est de dire au terminal d'envoyer une séquence personnalisée lorsque vous Escappuyez sur, puis de mapper cette séquence [escape]
à un stade d'entrée précoce dans emacs (le input-decode-map
).
J'espère que cela t'aides.
universal-argument
avec leuniversal-argument-map
.