Je viens d'essayer
(set 'global-map (make-sparse-keymap))
mais l'émission C-hbmontre toujours des tonnes de merde, en particulier dans la section Global Bindings :
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
... ...
et il y en a tellement d'autres à venir.
Je voudrais m'en débarrasser complètement. Comment puis-je éventuellement faire cela en un seul appel de fonction? Je voudrais que la solution soit un effacement total, plutôt qu'une boucle qui définit toutes ces cartes nil
. Merci d'avance.
REMARQUE: s'il vous plaît, aucune réponse pédagogique ou commentaire de spam comme "Ces clés sont essentielles pour la productivité, ne faites pas ça!" . J'ai ici une couche d'émulation hautement personnalisée pour l'édition de texte modal, donc je n'ai pas du tout besoin de ces liaisons par défaut.
key-bindings
keymap
Alexander Shukaev
la source
la source
evil-mode
cela que vous devez écrire votre propre couche d'édition modale?evil-mode
, mais certaines de ses fonctionnalités de haut niveau: opérateurs, objets texte et certaines commandes ont été réécrites ou étendues d'une manière ou d'une autre. Ses liaisons par défaut ont également été totalement effacées et réorganisées sur le clavier dès le début. Cela n'a cependant rien à voir avec la question.make-keymap
.Réponses:
Extrait du manuel Emacs Lisp (voir Contrôle des cartes actives ):
Pour citer le manuel: "Il est très inhabituel de changer le clavier global.". Remarque de sécurité: assurez-vous que vous pouvez enregistrer les tampons et quitter proprement Emacs avec une autre carte de touches, sinon vous devrez le tuer sans modifications enregistrées.
la source
Bien que les informations suivantes ne soient pas une réponse directe à la question (car elle a déjà été répondue par @wasamasa), je pense toujours que c'est un ajout essentiel à la réponse. Le fait est qu'après avoir délivré
en effet, on efface complètement la section Global Bindings , et par conséquent, on ne peut même plus taper de texte! Dans une écrasante majorité des cas, on voudra bien sûr restaurer la capacité de taper du texte car il est de toute façon essentiel pour tout éditeur de texte. Voici donc la seule façon de procéder:
Juste pour que vous croyiez que ce code Emacs Lisp est une façon correcte de le faire, je vais fournir la source que j'ai utilisée pour le produire. Par défaut, la possibilité de taper du texte avec la page de code ASCII 8 bits actuelle est implémentée dans l'
cmds.c
unité de traduction du code source Emacs C:Comme vous pouvez le voir, le code Emacs Lisp ci-dessus est la réplication exacte de ce code C, à l'exception d'une ligne supplémentaire:
Considérez cela comme une mise en garde, mais cette ligne est importante à avoir! Sinon, seuls 7 bits de la page de codes ASCII actuelle seraient disponibles (indépendamment du fait que nous ayons initialisé tous les 8 bits).
la source
self-insert-command
liaisons depuis le clavier global actuel?(setq my-global-map (make-keymap)) (substitute-key-definition 'self-insert-command 'self-insert-command my-global-map global-map)
global-map
savent immédiatement à quel problème ils vont faire face et quelle est la recette pour le résoudre. Ils apprendront probablement quelque chose de nouveau sur ASCII en général et / ou comment il est implémenté dans Emacs en particulier.