ฉันมีชุดของการเชื่อมโยงคีย์ที่ฉันใช้สำหรับทั้งสอง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
มากขึ้น