मेरे पास कुंजी बाइंडिंग का एक सेट है जो मैं दोनों के लिए 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।