我有一套键绑定,既用于(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
正在加载时,这些键绑定都会被激活。
问题是:假设我有两个打开的缓冲区,一个在中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
。