কীভাবে শর্তাধীনভাবে প্লাগইনগুলি লোড করা যায়


14

আমি এর উত্তরের সন্ধান করছিলাম, তবে এখনও কিছু খুঁজে পাইনি, তাই যদি আমি কিছু স্পষ্টভাবে মিস করি তবে আমি ক্ষমা চাই। আমি ভেবেছিলাম এটি একটি দ্রুত গুগল অনুসন্ধান হবে দূরে, সুতরাং এটি সম্ভবত আমার ধারণা থেকে আরও জটিল।

আমি যে ধরণের ফাইল সম্পাদনা করছি তার ভিত্তিতে আমি শর্তাধীন প্লাগইনগুলি লোড করতে সক্ষম হতে চাই। উদাহরণস্বরূপ, পাইথন সম্পাদনা করার সময়, আমি যে কীবাইন্ডিংগুলি vim-sexpইনস্টল করি তা চাই না , তবে ক্লোজারে কাজ করার সময়, আমি চাই যে প্লাগইনটি লোড হোক।

আমি বর্তমানে নিওভিম এবং প্যাথোজেন ব্যবহার করছি, তবে যদি অন্য কোনও প্লাগইন ম্যানেজার থাকে যা আমার জন্য এটি করে তবে আমি স্যুইচিংয়ের জন্য উন্মুক্ত থাকব। এছাড়াও, যদি এটি বিদ্যমান থাকে, :set syntax whateverপ্লাগইনগুলি স্যুইচ করে? কারণ এটি দুর্দান্ত হবে :)

কোনও সহায়তা / দিকনির্দেশের জন্য অগ্রিম ধন্যবাদ!


1
আপনি একটি প্রশ্ন জিজ্ঞাসা করছেন, তবে আপনি আসলে অন্যটি বর্ণনা করছেন: যদি কোনও প্লাগইন গ্লোবাল কীবাইন্ডিংগুলি ইনস্টল করে, সেগুলি অক্ষম করুন (এটি কীভাবে করবেন সে সম্পর্কে প্লাগইন ডক্সটি পড়ুন) এবং সেগুলি স্থানীয়ভাবে পুনরায় সক্ষম করুন (উদাহরণস্বরূপ অটোকিম্ড ব্যবহার করে) কেবল আপনার ফাইল টাইপের জন্য চাই। প্লাগইনটি যদি ভালভাবে লেখা থাকে তবে আপনি এর সূচনাতে বিলম্ব করে খুব বেশি লাভ করবেন না। তবে আপনি যদি কোনও প্লাগইন দ্বারা সক্রিয় অবাঞ্ছিত গ্লোবাল কী- বাইন্ডিংগুলি অক্ষম না করেন তবে প্লাগইন লোড হওয়ার পরে তারা আপনাকে প্রভাবিত করবে ।
ভ্যানলাসার

উত্তর:


18

আপনি ভিম-প্লাগ দিয়ে এটি করতে পারেন। দেখুন README :

" On-demand loading
Plug 'scrooloose/nerdtree', { 'on':  'NERDTreeToggle' }
Plug 'tpope/vim-fireplace', { 'for': 'clojure' }

আমি মনে করি প্লাগইন সক্ষম করার :set filetype whateverপরিবর্তে আপনাকে ব্যবহার করতে হবে set syntax whatever

(অন্য কোনও প্লাগইন পরিচালক আপনাকে এটি করার অনুমতি দিতে পারে, দেখুন ভিআইএম প্লাগইন পরিচালকদের মধ্যে পার্থক্য কী? )


8

execute pathogen#infect()সমস্ত প্লাগইন লোড করার জন্য কল করার পরিবর্তে pathogen#interposeপ্রতিটি প্লাগইন কল করুন , অর্থাত:

execute pathogen#interpose('bundle/unicode.vim')
execute pathogen#interpose('bundle/AnsiEsc.vim')

প্যাথোজেন এপিআই উত্সের বাইরে ডকুমেন্টেড নয় , তবে এটি যথেষ্ট সহজ (যদিও ফাংশনের নামগুলি অস্পষ্ট এবং বর্ণনামূলক নয়)। আপনি pathogen#surround()পরম পাথের জন্যও ব্যবহার করতে পারেন ।

আপনি মৌলিকভাবে প্লাগইনগুলি শর্তাধীন লোড করতে পারেন autocmd:

" Always use this plugin
execute pathogen#interpose('bundle/unicode.vim')

" Only for Python
autocmd FileType python execute pathogen#interpose('bundle/vim-sexp')

আপনি যদি দেখতে পান যে এই ক্ষেত্রে অনেকগুলি রয়েছে, আপনি এটিকে এমনকি বিভিন্ন পথে বিভক্ত করতে পারেন:

  • ~/.vim/bundle/always আপনি সর্বদা চান প্লাগইন জন্য
  • ~/.vim/bundle/<filetype> একটি নির্দিষ্ট ফাইল টাইপের জন্য প্লাগইনগুলির জন্য
  • এবং তারপরে এটি লোড করুন:

    " Always use this plugin
    execute pathogen#infect('bundle/always/{}')
    
    " Load filetype plugins if they exist
    autocmd FileType * if isdirectory('/home/martin/.vim/bundle/' . &ft) | execute pathogen#infect('bundle/' . &ft. '/{}') | endif
    

এইভাবে আপনাকে autocmdপ্রতিটি ফাইল টাইপ / প্লাগইন এর জন্য পুরো গুচ্ছ যোগ করতে হবে না ।

এটি উপস্থিত থাকলে, :set syntax whateverপ্লাগইনগুলি স্যুইচ করে? কারণ এটি দুর্দান্ত হবে :)

  • একবার একটি প্লাগইন লোড হয়ে গেলে, এটি লোড হয়। একটি "প্লাগইন" কেবল একটি সংগ্রহ function, commandএবং mapdefinitons। এটিকে "আনলোড" করার কোনও সোজা উপায় আমি জানি না।

  • এটি যদি আপনি ব্যবহার করেন তবে কোনও ফাইল টাইপের জন্য প্লাগইনগুলি লোড করে:set filetype ; সাধারণভাবে, আপনি সবসময় ব্যবহার করতে চান :set filetypeএবং না :set syntax , যেমন syntaxশুধুমাত্র সিনট্যাক্স হাইলাইটিং সেট হবে, এবং খাঁজ এবং অন্যান্য সেটিংস (যেমন iskeyword, formatexpr, ইত্যাদি)।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.