প্লাগইন সক্রিয় আছে কীভাবে তা দেখুন


15

আমি vim-latexsuiteউপযুক্ত ফাইলটি খুললে কোনও ফাইল টাইপ প্লাগইন (যেমন ) ইনস্টল এবং সক্রিয় করা হয়েছে কিনা তা আমি কীভাবে নির্ধারণ করতে পারি ? আর একটি জনপ্রিয় সম্পাদক নির্দেশ করবে যে প্রাসঙ্গিক "মাইনর মোড" সক্রিয়। ভিম সমতুল্য কি?

উত্তর:


20

কোনও ফাইল টাইপ প্লাগইন (যেমন ভিআইএম-ল্যাটেক্সসুইট) ইনস্টল করা আছে কিনা তা আমি কীভাবে নির্ধারণ করতে পারি

আপনি :scriptnamesসমস্ত উত্সযুক্ত ফাইলের তালিকাটি ব্যবহার করতে পারেন ।

অন্য বিকল্পটি হল ভেরিয়েবলটি পরীক্ষা করে দেখানো হবে যে এটি প্লাগইনটি যেমন লোড ছিল কিনা recommended practice to allow the user to disable the loading of a given plugin.। আপনি সাধারণত ফোল্ডারের g:loaded_...অভ্যন্তরে পরিবর্তনশীল খুঁজে পেতে পারেন <plugin_name>/plugin। আপনি যে প্লাগইনটি ব্যবহার করেছেন উল্লেখ করেছিলেনecho exists("loaded_libList")

এবং আমি যখন উপযুক্ত ফাইলটি খুলি তখন সক্রিয় হয়?

যদি এটি ফাইল টাইপ প্লাগইন হয় তবে 'filetype'বিকল্পটি সেট করা থাকলে এটি স্বয়ংক্রিয়ভাবে সক্রিয় হওয়া উচিত । বর্তমান বাফারের জন্য বিকল্পটি সঠিক কিনা তা আপনি পরীক্ষা করতে পারেন:

:set filetype?

আর একটি জনপ্রিয় সম্পাদক নির্দেশ করবে যে প্রাসঙ্গিক "মাইনর মোড" সক্রিয়। ভিম সমতুল্য কি?

প্লাগইন ব্যবহার করে বা সরাসরি বিকল্পগুলির মাধ্যমে, যেমন- vi-mproved.org:help 'statusline' তে ব্যাখ্যা করা হয়েছে আপনি এই জাতীয় ইঙ্গিতটি দেখানোর জন্য আপনার স্ট্যাটাসলাইনটি কাস্টমাইজ করতে পারেন ।


6

ভিম প্লাগইনগুলি কোনও অ্যাক্টিভেশন ইঙ্গিত সহ আসে না, এবং একটি সঠিক সেটআপে, এটি প্রয়োজনীয় নয়।

কোনও প্লাগইন এর পার্শ্ব প্রতিক্রিয়া, সাধারণত ম্যাপিংয়ের জন্য অনুসন্ধান করে তত্ক্ষণাত্ পরীক্ষা করতে পারেন। সুতরাং, উদাহরণস্বরূপ, আমি জানি যে NERDCommenter ম্যাপিং দিয়ে শুরু <Leader>c, তাই তার অ্যাক্টিভেশন জন্য একটি ক্যোয়ারী হবে :nmap <Leader>c। ম্যাপিংগুলি তালিকাভুক্ত থাকলে প্লাগইনটি সক্রিয় রয়েছে। একই কাস্টম কমান্ড এবং :autocmdপ্লাগইন গ্রুপে অর্জন করা যেতে পারে । বেশিরভাগ প্লাগইনগুলি অন্তর্ভুক্তি রক্ষাকারী ভেরিয়েবলের সংজ্ঞা দেয় g:loaded_pluginnameযা চেক করা যায়।

ফাইল টাইপ প্লাগইনগুলির ক্ষেত্রেও এটি একই প্রযোজ্য (এবং এর প্রভাবগুলি তখন সমস্ত বাফার-স্কোপ হওয়া উচিত)। সক্রিয় প্লাগইনগুলি নির্ধারণের জন্য সবচেয়ে গুরুত্বপূর্ণ বিষয়টি হ'ল ফাইল টাইপের সঠিক সনাক্তকরণ। আপনি যে মাধ্যমে জিজ্ঞাসা করতে পারেন :setlocal filetype?, বা এমনকি 'statusline'এটি আপনার %y/ %Yআইটেমের মাধ্যমে রাখতে পারেন ।


6

সেই বিশেষ ক্ষেত্রে, আমি কেবল খেলতাম :scriptnames। কোনও ফিট প্লাগইন লোড হয়েছে কিনা তা পরীক্ষা করার জন্য আমরা বৈশ্বিক পরিবর্তনশীল ব্যবহারের আশা করতে পারি না - LaTeXSuite- এ প্লাগইন থাকতে পারে, আমার মনে নেই, কোনটি নিশ্চিত যে এটি যথেষ্ট পরিমাণে ftplugin স্ক্রিপ্ট রয়েছে। অনেক ftplugins ব্যবহার করে (কমপক্ষে ভিমের সাথে প্রেরিতগুলি ) তবে এই পদ্ধতিটি অবশ্যই স্কেল করে না: ফলস্বরূপ, সমস্ত ftplugins এই অর্থহীন ভেরিয়েবল ব্যবহার করে না, এবং প্রদত্ত এফটিপ্লাগিন রয়েছে কিনা তা জানতে আমরা জেনেরিক ভেরিয়েবলের নাম পরীক্ষা করতে পারি না know লোড করা হয়েছে - উদাহরণস্বরূপ, সি এর জন্য আমার কাছে ২২ টি fpplugins রয়েছে, তারা অবশ্যই একই অ্যান্টি-রিঙ্কিলিউশন গার্ড ব্যবহার করছেন না।b:did_ftplugin

তাই :scriptname। হায়রে :scriptnameআমাদের মানুষের চোখের জন্য অনেকগুলি আনর্ডারড ফলাফল দেয়। ভাগ্যক্রমে execute()(খুব সাম্প্রতিক একটি কার্য), এবং filter()উদ্ধারে আসুন come সেক্ষেত্রে আমি ল্যাটেক্স সম্পর্কিত ভিএম স্ক্রিপ্টগুলি সন্ধান করব

:echo filter(split(execute(':scriptname'), "\n"), 'v:val =~? "tex"') 
" or even "latex" instead of "tex"

এছাড়াও আপনি যদি কোনও প্লাগইন পরিচালক ব্যবহার করেন তবে সম্ভবত প্লাগইন পরিচালকটি 'runtimepath'বিকল্পটি ব্যবহার করছেন । আপনি এর মানটি এর সাথে প্রদর্শন করতে পারেন :echo &rtp। আপনি এর মানটি এর সাথে ফিল্টারও করতে পারেন:

:echo filter(split(&rtp), ','), 'v:val =~? "tex")

(এটি আপনাকে বলবে যে আপনার প্লাগইন পরিচালক আপনার ক্ষেত্রে আপনার প্লাগইন, ল্যাটেক্স-স্যুটটি সক্রিয় করেছে কিনা তা সম্পর্কিত ftplugins সঠিকভাবে লোড হয়েছে কিনা তা আপনাকে জানায় না you :scriptnameআপনাকে এই তথ্য দেবে))


3

আপনি যদি স্বতঃসম্পাদক দ্বারা ফাইল টাইপ প্লাগইনগুলি সক্রিয় করেন, আপনি ভার্বোজ = 9 সেট করতে পারেন যাতে ভিম তাদের সম্পাদন করার সাথে সাথে অটোকম্যান্ডগুলি প্রতিধ্বনিত করে:

:set verbose=9

3

একটি উপায় হ'ল একটি রেজেেক্স অনুসন্ধান করা runtimepath:

if match(&runtimepath, 'MY-PLUGIN') != -1
    " ...
endif

আপনি যদি ভিএম-প্লাগ ব্যবহার করছেন তবে এখানে যাচাই করার জন্য একটি সাধারণ উদ্দেশ্য পদ্ধতি রয়েছে:

function! PlugLoaded(name)
    return (
        \ has_key(g:plugs, a:name) &&
        \ isdirectory(g:plugs[a:name].dir) &&
        \ stridx(&rtp, g:plugs[a:name].dir) >= 0)
endfunction

ব্যবহার:

if PlugLoaded('MY-PLUGIN')
    " ...
endif

এটা যথেষ্ট না. এছাড়াও, এটি প্লাগইন পরিচালকদের সাথে ইনস্টল হওয়া প্লাগইনগুলির কেবল যত্ন নেয়। সমস্ত ক্ষেত্রে, এটি প্লাগিনগুলির মধ্যে প্রেরিত এফটিপ্লাগিন স্ক্রিপ্টগুলির যত্ন নেয় না, যা ওপির প্রশ্ন was
লুক হার্মিটে

0

আপনি যদি ভিএম-প্লাগ ব্যবহার করেন , এটি একটি ভেরিয়েবল সেট করে plugsযা আপনার সমস্ত লোড হওয়া প্লাগইন এবং সেগুলি সম্পর্কে কিছু তথ্য তালিকাভুক্ত করে। আমি যখন আপনার ওয়াইসিএম চালাচ্ছি বা coc.nvim যাচাই করা দরকার তখন আমি নিজের প্রশ্নটি নিজের জন্য সমাধান করেছি। কোনও প্লাগইন রান করে লোড হয়েছে কিনা তা আপনি দেখতে পারেন has_key(plugs, "name"), উদাহরণস্বরূপ:

if has_key(plugs, 'YouCompleteMe')
        call YCM()
endif
if has_key(plugs, "coc.nvim")
        call CocStart()
endif

দ্রষ্টব্য: এটি কেবলমাত্র এটি বর্তমানে আপনার তালিকায় তালিকাভুক্ত হয়েছে কিনা তা দেখায় vimrcএবং উদাহরণস্বরূপ, আপনার যদি এটি অলস বোঝাতে সেট করা থাকে, তাই

    Plug 'scrooloose/nerdtree', {'on': 'NERDTreeToggle'}
    ...
if has_key(plugs, 'nerdtree')
        echo "HAS NERDTREE"
endif

এখনও nerdtreeলোড না করা সত্ত্বেও এটি প্রারম্ভকালে মুদ্রণ করবে ।

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