Vim फ़ाइल प्रकार प्लगइन को सक्रिय करना


4

मेरी .vimrc फ़ाइल में मेरे पास यह रेखा है।

filetype plugin indent on

और फिर ~/.vim/ftplugin/py.vimrc(मैंने इसे एक .vim फ़ाइल के रूप में सहेजने का भी प्रयास किया है) मैंने अजगर मानकों के लिए एक vimrc फ़ाइल को कॉपी और पेस्ट किया है और इसमें सभी सुझाए गए सेटिंग्स (उन्हें अनियोजित) सक्षम किया है। जब मैं एक test.py फ़ाइल बनाते और खोलते हैं और टैब की तरह कुछ करते हैं, तो यह 4 के बजाय 8 रिक्त स्थान जाता है।

निश्चित नहीं है कि क्या गलत हो रहा है।

जवाबों:


1

मैं प्रतिस्थापित करूँगा

au BufRead,BufNewFile *.py,*pyw set shiftwidth=4
au BufRead,BufNewFile *.py,*.pyw set expandtab
fu Select_c_style()
    if search('^\t', 'n', 150)
        set shiftwidth=8
        set noexpandtab
    el 
        set shiftwidth=4
        set expandtab
    en
endf

साथ में

" indenting
set cindent
set autoindent
set shiftwidth=4
set softtabstop=4
set tabstop=4
set expandtab
set backspace=indent,eol,start

क्योंकि यह स्पष्ट नहीं है कि या तो Select_c_style()फ़ंक्शन को कॉल किया जा रहा है या उद्धृत कोड पर्याप्त है।

हां, मेरा दूसरा .vimrc एक्स्ट्रेक्ट आपको बिना किसी स्पष्ट के कहीं भी टैब का उपयोग करने से रोकता है Ctrl-V Tab, लेकिन अधिकांश यूनिक्स स्थितियों में शाब्दिक टैब वैसे भी एक अड़चन हैं। (और Pythonistas जो पोस्ट करते हैं। vim संक्षिप्ताक्षरों के साथ .vimrc फाइलें नोटपैड का उपयोग करने के लिए मजबूर किया जाना चाहिए, लेकिन एक अलग मुद्दा है;)


काम नहीं करता है, और मुझे यकीन नहीं है कि अगर यह समस्या है। मुझे नहीं पता कि विम बिल्कुल प्लगइन पढ़ रहा है या नहीं।
व्यक्ति

स्क्रिप्ट डिबगिंग आज़माएं: समस्या निवारण
wiki.org/Debugging_Vim_Scripts

s / set / setlocal /
Luc Hermitte

0

संक्षिप्त उत्तर यह है कि आपको उस फ़ाइल को अपनी ~ / .vim / ftplugin निर्देशिका के बजाय अपनी ~ / .vim / plugin निर्देशिका में रखना चाहिए। यदि आप ऐसा करते हैं, तो इससे कोई फर्क नहीं पड़ेगा कि फ़ाइल का आधार नाम क्या है, लेकिन प्रत्यय ".vim" होना चाहिए।

आपकी फ़ाइल के शीर्षलेख के अनुसार, इसे किसी भी समय खट्टा किया जा सकता है और यह पायथन फ़ाइलों के अलावा किसी भी फाइल को प्रभावित नहीं करेगा। इसलिए फ़ाइल को अपनी ~ / .vim / plugin डायरेक्टरी में रखना सुरक्षित है, जहाँ आप Vim शुरू करने पर हर बार इसे सॉर्ट किया जाएगा।

आपके ~ / .vim / ftplugin निर्देशिका में py.vimrc डालने के तीन कारण नहीं हैं। पहला यह है कि प्रत्यय ".vim" होना चाहिए। दूसरा यह है कि फ़ाइल का आधार नाम फ़ाइल प्रकार के लिए विम के नाम के समान होना चाहिए। पायथन के लिए, फ़ाइल प्रकार "अजगर" है। इसलिए, पायथन के लिए एक फ़िलाटाइप प्लगइन का नाम "python.vim" होना चाहिए। तीसरा कारण यह है कि उस फाइल में ऑटोकॉमैंड्स तब पढ़े जाते हैं, जब फाइल खट्टी होती है, जो तब होती है जब आप पायथन सोर्स फाइल खोलते हैं (यदि बाकी सब कुछ सही था)। अगली बार जब आप पाइथन फ़ाइल खोलते हैं, तो उनकी कमांड निष्पादित होने के लिए तैयार होती हैं ।

अंत में, 'टैबस्टॉप' सेटिंग को 4 में न बदलें। भले ही आप 4 के इंडेंटेशन का उपयोग करते हैं, 4 में 'शिफ्ट' सेट करते हैं और शायद 'सॉफ्टटैबटॉप' से 4 पर, लेकिन 'टैबस्टॉप' को 8 पर छोड़ते हैं। यही कारण है कि पिछली बार जब मैंने जाँच की थी, पायथन दुभाषिया ने 8. का टैब स्टॉप माना है। यदि आप सावधान और सुसंगत हैं, तो आप अन्य 'टैबस्टॉप' मूल्यों का उपयोग करके दूर हो सकते हैं, लेकिन मुझे लगता है कि यह जोखिम भरा है।


आप फुटप्लगिन नामकरण नीतियों और वैश्विक परिवर्तनों के बारे में सही हैं (ओपी :setइसके बजाय उपयोग कर रहे हैं :setlocal)। हालाँकि, चूंकि ये सेटिंग्स अजगर संपादन के लिए हैं, इसलिए वे एक फुटप्लगिन के अंदर होंगे।
ल्यूक हरमिट

यदि वह उस फाइल को अपरिवर्तित उपयोग करता है, तो यह एक ftplugin नहीं हो सकता है। एक उदाहरण के रूप में, मान लें कि वह उस फाइल को एक ftplugin के रूप में उपयोग करता है, तो कुछ फ़ाइल foo.py संपादित करता है। विम एक BufRead घटना उत्पन्न करेगा जो $ VIMRUNTIME / filetype.vim मिलान * में ऑटोकॉमैंड को ट्रिगर करेगा। फिर जो "अजगर" के लिए एक फ़ाइल टाइप इवेंट उत्पन्न करेगा और उसकी फ़ाइल को स्रोत करेगा। उस फ़ाइल का दूसरा कमांड है "au BufRead, BufNewFile * .py, * pyw set shiftwidth = 4"। यह ऑटोकॉमैंड को सक्षम करेगा लेकिन "सेट शिफ्ट एक्सपोजर" निष्पादित नहीं करेगा। "सेट शिफ्ट" को तब तक निष्पादित नहीं किया जाएगा जब तक कि वह एक दूसरे अजगर फ़ाइल को लोड नहीं करता।
गैरजॉन

-1

आप सेट कर रहे हैं filetype plugin on? आपको ऐसा करने की आवश्यकता हो सकती है न कि केवल filetype plugin indent on


filetype plugin indent onतात्पर्यfiletype plugin on
ल्यूक हरमिट

आह, यहाँ यह है,:help :filetype-overview
intuited
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.