Genel olarak mümkün değil.
Bunun nedeni, aynı bağlamayı tanımlayan birkaç harita olması ve hangisini istediğinizi otomatik olarak anlamanın bir yolu olmamasıdır. (örneğin, elisp-slime-nav-mode
böyle küçük bir moddur). Yani gerçekten güvenilir olan tek yaklaşım tam olarak hangi tanımı istediğinizi bulmanızdır.
Dedi ki ... olası bir kesmek var (her zaman orada değil ...) Onu zorlaştıran şeyin bir kısmı, yeniden eşlemek istediğiniz bağlamanın potansiyel olarak etkin bir aktif tuş haritası tarafından maskelenmiş olması, M-.
yararsızdır.
(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-]"))
Normalde kötüyü hiç kullanmıyorum, bu yüzden gerekli ayarlamalar olabilir (gömülü yorumlara bakın)
Ayrıca, daha net bir yaklaşım, tuşlara her basıldığında dinamik olarak bakmak yerine, bağlamaları bir kez (örneğin bir mod kancasında) aramak olacaktır. Ama hangi kötü kancayı kullanacağınızdan emin değilim, bu yüzden bu bir egzersiz olarak bırakılır;) (ve küçük modlarınız için kullandığınız sıraya bağlı olarak veya bunları dinamik olarak değiştirirseniz, yanlış olabilir)