यदि vim-latexsuite
मैं उपयुक्त फ़ाइल खोलता हूं, तो मैं यह कैसे निर्धारित कर सकता हूं कि कोई फ़िलाटाइप प्लगइन (जैसे ) स्थापित और सक्रिय किया गया है? एक अन्य लोकप्रिय संपादक संकेत देगा कि प्रासंगिक "मामूली मोड" सक्रिय है। क्या समतुल्य है?
यदि vim-latexsuite
मैं उपयुक्त फ़ाइल खोलता हूं, तो मैं यह कैसे निर्धारित कर सकता हूं कि कोई फ़िलाटाइप प्लगइन (जैसे ) स्थापित और सक्रिय किया गया है? एक अन्य लोकप्रिय संपादक संकेत देगा कि प्रासंगिक "मामूली मोड" सक्रिय है। क्या समतुल्य है?
जवाबों:
मैं यह कैसे निर्धारित कर सकता हूं कि कोई फ़िलाटाइप प्लगइन (जैसे विम-लेटेक्सुसाइट) स्थापित किया गया है
आप :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-improved.org:help 'statusline'
पर बताया गया है ।
विम प्लगइन्स किसी भी सक्रियण संकेत के साथ नहीं आते हैं, और एक उचित सेटअप में, यह आवश्यक नहीं है।
आप जल्दी से जांच कर सकते हैं कि क्या कोई प्लगइन इसके साइड इफेक्ट्स, आमतौर पर मैपिंग के लिए क्वेरी करके सक्रिय है या नहीं। इसलिए, उदाहरण के लिए, मुझे पता है कि NERDCommenter मैपिंग के साथ शुरू होता है <Leader>c
, इसलिए इसके सक्रियण के लिए एक क्वेरी होगी :nmap <Leader>c
। यदि मैपिंग सूचीबद्ध हैं, तो प्लगइन सक्रिय है। कस्टम कमांड के लिए और :autocmd
प्लगइन के समूह में समान हासिल किया जा सकता है । अधिकांश प्लगइन्स एक समावेश गार्ड चर को भी परिभाषित g:loaded_pluginname
करते हैं जिन्हें जांचा जा सकता है।
यही बात filetype plugins पर लागू होती है (और प्रभाव तब सभी को बफर-स्कोप होना चाहिए)। सक्रिय प्लगइन्स का निर्धारण करने में सबसे महत्वपूर्ण कारक फ़िलेटाइप का सही पता लगाना है। आप उस के माध्यम से क्वेरी कर सकते हैं :setlocal filetype?
या यहां तक 'statusline'
कि %y
/ %Y
आइटम के माध्यम से इसे अपने में डाल सकते हैं ।
उस विशेष मामले में, मैं केवल साथ खेलूंगा :scriptnames
। हम यह जांचने के लिए एक वैश्विक चर का उपयोग करने की उम्मीद नहीं कर सकते हैं कि क्या एक फीट प्लगइन लोड किया गया है - लाटेक्सुइट में प्लगइन्स हो सकते हैं, मुझे याद नहीं है, जो कुछ निश्चित है वह है कि बहुत सारे फुटप्लगिन स्क्रिप्ट हैं। कई ftplugins का उपयोग करें b:did_ftplugin
(कम से कम विम के साथ भेज दिया), लेकिन यह दृष्टिकोण निश्चित रूप से पैमाने पर नहीं होता है: परिणाम में, सभी ftplugins इस व्यर्थ चर का उपयोग नहीं करते हैं, और हम एक सामान्य चर नाम की जांच नहीं कर सकते हैं कि क्या एक दिया गयाplugin है लोड किया गया है - उदाहरण के लिए, अकेले C के लिए मेरे पास 22 ftplugins हैं, वे निश्चित रूप से समान एंटी-रिनिवलिंग गार्ड का उपयोग नहीं कर रहे हैं।
तो :scriptname
। :scriptname
हमारी मानव आंखों के लिए, अलास बहुत सारे अनियंत्रित परिणाम देता है। सौभाग्य से execute()
(हाल ही में एक समारोह), और filter()
बचाव के लिए आते हैं। उस स्थिति में, मैं लेटेक्स से संबंधित विम लिपियों की तलाश करूंगा
: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")
(यह आपको बताएगा कि क्या आपके प्लगइन प्रबंधक ने आपके प्लगइन, आपके मामले में LaTeX-suite को सक्रिय कर दिया है। यह आपको यह नहीं बताएगा कि संबंधित फ़्लिपगिंस सही ढंग से लोड किए गए हैं या नहीं। :scriptname
यह जानकारी आपको देगा।
एक तरीका यह है कि आप रेगेक्स सर्च करें 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
यदि आप विम-प्लग का उपयोग करते हैं , तो यह एक चर सेट करता है, plugs
जो आपके सभी लोड किए गए प्लगइन्स को सूचीबद्ध करता है, और उनके बारे में कुछ जानकारी। जब मैं YCM या 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
अभी तक लोड नहीं किया गया है।