क्या वास्तव में "पर filetype प्लगइन" करता है?


11

मैं समझता हूं कि यह ftplugin.vimफ़ाइल को लोड करता है, लेकिन यह वास्तव में क्या करता है? क्या यह विकल्प निर्धारित करता है (फिलाटाइप के आधार पर)?

अगर मुझे अपने vimrc के शुरू में इस लाइन को शामिल करना था

filetype plugin indent on

और फिर मैंने इस लाइन के बाद कुछ विकल्प निर्धारित किए (जैसे ऑटोइंडेंट, स्मार्टइंडेंट आदि), क्या यह उनके साथ खिलवाड़ होगा? मुझे कैसे पता चल सकता है कि कौन से विकल्प किसी फिल्टाइप प्लगइन या इंडेंट फाइल से प्रभावित हैं?

जवाबों:


7

वास्तव में एक अच्छा वर्णन है help filetype

कोई भी विकल्प जो एक फ़िलाटाइप के लिए परिभाषित किया गया है, उसके साथ सेट किया जाएगा setlocal:

:setl[ocal] ...     Like ":set" but set only the value local to the
                    current buffer or window.  Not all options have [..]

उदाहरण के लिए /usr/share/vim/vim80/ftplugin/javascript.vimपरिभाषित करता है:

setlocal commentstring=//%s

क्योंकि वैश्विक विकल्पों में स्थानीय विकल्पों की प्राथमिकता होती है, इसलिए आपकी .vimrcसेटिंग्स को अनदेखा किया जा सकता है। उस स्थिति में आपको एक फ़ाइल बनाने की ज़रूरत है ~/.vim/after/ftplugin/javascript.vim( जिस फ़ाइल नाम को आप बदलना चाहते हैं उसके नाम के साथ) और setlocalवहाँ पर अपने स्वयं के विकल्प सेट करें ।

सबसे आसान तरीका है देखने के लिए बस में फ़ाइल प्रकार के लिए फ़ाइलों को खोलने के लिए है जो विकल्प सेट हैं /usr/share/vim/vim80/ftplugin, ../indentऔर ../syntax


1
E492: एडिटर कमांड नहीं: [उसी पर इंडेंट के लिए प्लगइन]
टोनी

इस उत्तर का अंतिम वाक्य गलत है। filetype plugin onऔर filetype indent onवास्तव में अलग-अलग आदेश हैं, लेकिन दोनों को उपज के लिए जोड़ा जा सकता है filetype plugin indent on
रुस्लान

@Ruslan धन्यवाद, मैंने उस वाक्य को हटा दिया।
लखटक

2

यह ऑटोकॉमैंड्स को परिभाषित करता है जो किसी दिए गए पैटर्न से मेल खाते हुए फ़ाइल को खोलने पर निष्पादित हो जाएगा। ये autocommands sourceबदले में filetype प्लगइन रों filetype मान्यता प्राप्त करने के लिए जुड़ा हुआ है।

उन फ़ाइल स्क्रिप्ट प्लगइन लिपियों में, आप ऐसी कोई भी चीज़ ढूंढने / लिखने में सक्षम होंगे जिसे आप एक स्क्रिप्ट में डाल सकते हैं। अच्छा अभ्यास कभी भी वैश्विक चीजों को परिभाषित नहीं करता है, लेकिन विशेष रूप से स्थानीय चीजों को। अर्थात:

  • के साथ स्थानीय विकल्प :setlocal opt=value
  • के साथ स्थानीय मैपिंग :[cnivsxot](nore)map <buffer> ...
  • :iab-<buffer> ...और सह के साथ स्थानीय संक्षिप्तीकरण
  • स्थानीय कमांड के साथ :command -b ...
  • के साथ स्थानीय चर :let b:var = 42

के बारे में

  • मेनू, आपको प्लगइन्स का उपयोग करना होगा जो स्थानीय मेनू का अनुकरण करता है, माइकल गेडेस का प्लगइन या मेरा आधुनिक कांटा देखें ;
  • फ़ंक्शंस, आप उन्हें ftplugins में रख सकते हैं, लेकिन वे ऑटोलैड प्लगइन्स में सबसे अच्छा परिभाषित हैं।
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.