Ich habe eine Reihe von Tastenkombinationen, die ich sowohl für web-modeals auch php-modeim Einfügemodus (von Evil) verwende. Also kann ich nicht benutzen set-local-mapoder so. Denn im normalen Modus rufen dieselben Tasten dann andere Befehle auf. Die Bindungen müssen also evil-insert-state-mapnur in aktiv sein.
Ich habe folgendes:
(eval-after-load 'php-mode
'(progn
(define-key evil-insert-state-map
(kbd "C-<next>") (lambda () (interactive) (insert " = ")))
(define-key evil-insert-state-map
(kbd "C-<prior>") (lambda () (interactive) (insert "->")))))
(eval-after-load 'web-mode
'(progn
(define-key evil-insert-state-map
(kbd "C-<next>") 'zencoding-expand-yas)
(define-key evil-insert-state-map
(kbd "C-<prior>") 'zencoding-expand-line)))
Also jedes Mal , web-modeoder php-modegeladen wird, werden diese Tastenbelegungen aktiviert.
Das Problem ist: Angenommen, ich habe zwei offene Puffer, einen im php-modeund einen im web-mode. Wenn der web-modePuffer der aktuelle Puffer ist und ich zu einem anderen Puffer wechsle, der sich im Puffer befindet php-mode, sind die web-modeBindungen im php-modePuffer noch aktiv .
Ich habe versucht, dieses Problem zu lösen, indem ich die Bindungen in (add-hook 'web-mode-hook [...])und (add-hook 'php-mode-hook [...])anstelle von eingerichtet habe eval-after-load. Aber diese Lösung funktioniert in dieser Situation nicht.
Irgendwelche Vorschläge? Ich würde dies sehr begrüssen.
evil-define-key.