Je voudrais utiliser la ESC
clé au lieu de C-g
pour keyboard-quit
. Mon approche naïve pour faire
(define-key global-map (kbd "ESC") 'keyboard-quit)
ne marche pas. ESC
est toujours une touche de préfixe et le presser n'appelle pas keyboard-quit
.
key-bindings
Geier
la source
la source
universal-argument
avec leuniversal-argument-map
.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.la source
C-g
pour le détacher, leESC
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) commemeta-prefix-key
. Dans le manuel Elisp:et
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.la source
ESC
. Liez une autre clé àkeyboard-quit
, si vous le souhaitez. Et sachez que celaESC ESC ESC
vous donne déjà le comportement d'échappement que vous souhaitez - voir le manuel Emacs, noeud Quitting .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. Leesc-map
est défini au niveau du code source C danskeymap.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 lameta-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:
la source
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 ASCIIESC
, et comme les glucas l'ont mentionné, vous ne voulez certainement pas remapper celui-ci. Mais ce Escn'est pas ASCIIESC
: c'est un symboleescape
, du moins dans un environnement graphique. Comment se fait-il que la liaison(kbd "ESC")
affecte Escalors? Cela se produit car emacs se traduitescape
parESC
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 delocal-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 soucierESC
; en dehors de vos propres liaisons, il vous suffit d'augmenter les keymaps qui disentESC
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 (leinput-decode-map
).J'espère que cela t'aides.
la source