Im Allgemeinen ist es nicht möglich.
Der Grund dafür ist, dass es möglicherweise mehrere Maps gibt, die dieselbe Bindung definieren, und es nicht möglich ist, automatisch herauszufinden, welche Sie möchten. (In Ihrem Beispiel elisp-slime-nav-mode
ist dies ein untergeordneter Modus). Der einzig wirklich zuverlässige Ansatz besteht darin, dass Sie genau herausfinden, welche Definition Sie möchten.
Das heißt, es gibt einen möglichen Hack (gibt es nicht immer ...). Ein Teil der Schwierigkeit besteht darin, dass die Bindung, die Sie neu zuordnen möchten, möglicherweise bereits durch eine böse aktive Keymap maskiert ist, sodass die aktuelle Bindung von abgerufen wird M-.
ist nutzlos.
(defun lookup-no-evil (key)
;; excluding evil maps from the lookup. not sure if
;; anything more than evail-normal-state-map is needed
(let* ((evil-maps (list evil-normal-state-map))
(bindings
(remq nil
(mapcar
(lambda (map)
(unless (memq map evil-maps)
(lookup-key map key)))
(current-active-maps)))))
(when bindings
;; let's assume the first one is the right one.
;; Given that minor modes are at the beginning
;; (although this is *not* documented so should not
;; be relied upon), it might be what we would have
;;without evil-mode indeed
(car bindings))))
(defmacro evil-remap (from to)
;; assuming that we want to put it in the normal-state map.
;; not sure about that
`(define-key evil-normal-state-map ,to
(lambda ()
(interactive)
(call-interactively (lookup-no-evil ,from)))))
(evil-remap (kbd "M-.") (kbd "C-]"))
Normalerweise benutze ich überhaupt kein Böses, daher sind möglicherweise Anpassungen erforderlich (siehe eingebettete Kommentare).
Ein sauberer Ansatz wäre auch, die Bindungen einmal nachzuschlagen (z. B. in einem Modus-Hook), anstatt bei jedem Drücken der Tastenkombination dynamisch nachzuschlagen. Aber ich bin mir nicht sicher, welchen bösen Haken ich verwenden soll, daher bleibt dies als Übung übrig;) (und abhängig von der Reihenfolge, die Sie für Ihre Nebenmodi verwenden, oder wenn Sie sie dynamisch umschalten, ist dies möglicherweise falsch.)