(Evilの)挿入モードweb-modeとphp-mode挿入モードの両方で使用するキーバインディングのセットがあります。set-local-mapなんか使えないので。通常モードでは、同じキーが他のコマンドを呼び出すためです。したがって、バインディングはアクティブである必要があるevil-insert-state-mapだけです。
私は以下を持っています:
(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)))
したがって、web-modeまたはphp-modeロードされるたびに、これらのキーバインディングがアクティブになります。
問題は次のとおりです。私が2つのオープンバッファーを持っているphp-modeとしweb-modeます。ときにweb-modeバッファがカレントバッファであると私はだ別のバッファに切り替えphp-mode、web-modeバインディングはまだ内部のアクティブなphp-modeバッファ。
私が使用してこの問題を解決しようとした(add-hook 'web-mode-hook [...])と(add-hook 'php-mode-hook [...])の代わりにバインディングを設定しますeval-after-load。しかし、その解決策はこの状況では機能しません。
助言がありますか?とても感謝しております。
evil-define-key。