108 votes

Substituer à l’échelle mondiale raccourci clavier dans Emacs

Comment puis-je définir une clé de liaison à l'échelle de remplacements et a préséance sur toutes les autres liaisons pour cette clé? Je veux remplacer tous les majeur/mineur mode cartes et assurez-vous de ma liaison est toujours en vigueur.

Bien sûr, cela ne fonctionne pas:

(global-set-key "\C-i" 'some-function)

Il fonctionne en text-mode, mais lorsque j'utilise lisp-mode, C-i est le rebond d' lisp-indent-line.

Je peux aller à travers et de remplacer cette liaison en lisp-mode et dans tous les autres mode individuellement, mais il doit y avoir un moyen plus facile. Chaque fois que j'installe un nouveau mode pour un nouveau type de fichier, je dois revenir en arrière et assurez-vous que tous mes raccourcis clavier ne sont pas remplacées par le nouveau mode.

Je veux le faire parce que je veux émuler les liaisons que j'ai déjà appris et enracinée à partir d'autres éditeurs.

158voto

scottfrazer Points 11035

J’utilise un mode mineur pour tous mes raccourcis clavier « substituer » :

Cela a l’avantage d’être en mesure d’éteindre toutes mes modifications en un seul est tombé swoop (juste désactiver le mode mineur) au cas où quelqu'un d’autre est le moteur du clavier ou si j’ai besoin de voir en quoi consiste une liaison de clé par défaut.

Notez que vous devrez peut-être désactiver cette option dans le minibuffer :

31voto

phils Points 30543

En complément à la réponse de scottfrazer, j’ai écrit les conseils suivants afin que mon keybindings gardent priorité, même si les bibliothèques chargées par la suite apportent keymaps nouvelle qui leur est propre.

Car keymaps peuvent être générées à la compilation, `` semblait être le meilleur endroit pour ce faire.

15voto

Jay Doane Points 21

J'ai trouvé cette question en cherchant "emacs undefine org mode keybindings", car je voulais dissocier le comportement Cc Cb existant pour permettre à ma carte globale d'enterrer le tampon dans un tampon org.

Cela a fini par être la solution la plus simple pour moi:

 (add-hook 'org-mode-hook
      (lambda ()
        (local-unset-key (kbd "C-c C-b"))))
 

12voto

Kirkland Points 116

Bien que scottfrazer la réponse est exactement ce que vous avez demandé, je vais parler pour la postérité une autre solution.

À Partir Du Manuel D'Emacs:

"Ne pas se définir C-c de la lettre clé dans les programmes Lisp. Les séquences composées de C-c et une lettre (majuscule ou minuscule) sont réservés à des utilisateurs; ils sont les seules séquences réservées pour les utilisateurs, afin de ne pas les bloquer."

Si vous liez votre personnel global de liaisons C-c en plus d'une lettre, puis vous "doit" être en sécurité. Cependant, ce n'est qu'une convention, et tout le mode est encore en mesure de remplacer vos fixations.

2voto

JesperE Points 34356

À moins que vous ne vouliez vraiment le faire vous-même, vous devriez vérifier si quelqu'un d'autre l'a déjà fait.

Il existe un paquet pour Emacs qui donne à vos raccourcis clavier de type Windows. Vous devriez être en mesure de le trouver via Google.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X