Ce problème a été adressé in this question. La façon de faire est de créer un mode mineur avec vos liaisons. Vos liaisons en mode mineur masquent les liaisons de tout mode majeur. J'aime votre exemple, puisque depuis quelques semaines, je rebondis Mh, j, k, l à leurs mouvements vim équivalents, et fait un mode mineur pour le faire (ça a été une bonne idée Les liaisons par défaut d'Emacs sont vraiment terribles). Voici un exemple d'une partie de mon code:
(defvar kirkland-minor-mode-map (make-keymap) "kirkland-minor-mode keymap.")
(define-key kirkland-minor-mode-map (kbd "M-h") 'backward-char)
(define-key kirkland-minor-mode-map (kbd "M-l") 'forward-char)
(define-key kirkland-minor-mode-map (kbd "M-j") 'next-line)
(define-key kirkland-minor-mode-map (kbd "M-k") 'previous-line)
(define-minor-mode kirkland-minor-mode
"A minor mode so that my key settings aren't shadowed by other major/minor modes"
t " kirkland" 'kirkland-minor-mode-map)
Une autre chose que je devrais mentionner est que tout ceci surpassera toutes les liaisons de mode majeur, il peut encore être remplacé par d'autres modes mineurs qui sont chargés plus tard.
Regardez cette question: http://stackoverflow.com/questions/683425/globally-override-key-binding-in -emacs – scottfrazer