আমি কীভাবে একটি নির্দিষ্ট এভিল অবস্থায় মোডের জন্য কী কী বাইন্ডিংগুলি সেট আপ করব?


9

আমি এ কী বাইন্ডিং যে আমি উভয় জন্য ব্যবহার একটি সেট আছে 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

কোন পরামর্শ? আমি সত্যিই কৃতজ্ঞ হবে।

উত্তর:


12

evil-define-keyকেবলমাত্র একটি নির্দিষ্ট কীম্যাপে নির্দিষ্ট রাজ্যের জন্য আদেশগুলি সংজ্ঞায়িত করার জন্য এভিলের ম্যাক্রো রয়েছে :

(evil-define-key 'insert emacs-lisp-mode-map (kbd "C-c C-c") 'butterfly
                                             (kbd "<pause>") 'zone)

এটি বাইন্ডিং কার্যকর করতে বিলম্ব করতে সক্ষম ( eval-after-loadনিজে ব্যবহার করে) এবং একাধিক কী-কমান্ড জুড়িও নিতে পারে যা নিফটি সংযোজন।


আপনার সমাধান কাজ করে, আমি তার জন্য কৃতজ্ঞ। দুষ্ট-সংজ্ঞা কী হিসাবে এমন জিনিস আছে তা কখনই জানতেন না। এবং প্রকৃতপক্ষে সুন্দর নিফটি যে আপনি আরও কীকম্যান্ডের জোড়কে বাঁধতে পারেন evil-define-key
রিনিফ্রোগার
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.