Tôi có một bộ các ràng buộc chính mà tôi sử dụng cho cả hai web-modevà php-modetrong chế độ chèn (của Evil). Vì vậy, tôi không thể sử dụng set-local-maphoặc một cái gì đó. Bởi vì trong chế độ bình thường, các phím tương tự sau đó sẽ gọi các lệnh khác. Vì vậy, các ràng buộc cần phải được hoạt động evil-insert-state-mapchỉ.
Tôi có những điều sau đây:
(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)))
Vì vậy, mỗi khi web-modehoặc php-modeđang được tải, các ràng buộc chính này sẽ được kích hoạt.
Vấn đề là: Giả sử tôi có hai bộ đệm mở, một trong php-modevà một trong web-mode. Khi web-modebộ đệm là bộ đệm hiện tại và tôi chuyển sang bộ đệm khác php-mode, các web-modeliên kết vẫn hoạt động bên trong php-modebộ đệm.
Tôi đã cố gắng giải quyết vấn đề này bằng cách sử dụng (add-hook 'web-mode-hook [...])và (add-hook 'php-mode-hook [...])thay vì thiết lập các ràng buộc trong eval-after-load. Nhưng giải pháp đó không hoạt động trong tình huống này.
Bất kỳ đề xuất? Tôi thực sự sẽ đánh giá cao nó.
evil-define-key.