मैं कई समूहों में काम करता हूं, जिनमें से प्रत्येक का अपना टैब / इंडेंटेशन / स्पेसिंग सी में मानक हैं।
मैं एक ही समय में सभी प्रकार के खुले स्रोत के साथ काम करता हूं। यह अलग-अलग .vimrcफ़ाइलों को बनाने और स्वरूपण मानकों को पुन: कॉन्फ़िगर करने के लिए व्यावहारिक नहीं है । एक दशक से अधिक समय पहले, मैं अंत में संपादक विन्यास से निपट कर थक गया और autotabइसे संभालने के लिए एक कार्यक्रम लिखा ।
जब autotabविम का सुझाव दिया जाता है, तो हर बार जब आप किसी फ़ाइल को विम में लोड करते हैं, autotabतो उस पर इनवॉइस किया जाता है, और विम सेटिंग्स आउटपुट autotabको पास कर दिया जाता है:set कमांड में ।
autotab, फ़ाइल से कई हजार लाइनों पढ़ता उन्हें विश्लेषण करती है और के लिए सेटिंग्स को निर्धारित करता है expandtab, tabstopऔर shiftwidthमानकों।
यह पता लगाता है कि फ़ाइल हार्ड टैब या इंडेंटेशन के लिए रिक्त स्थान का उपयोग करता है या नहीं, और यह इंडेंटेशन आकार का पता लगाता है। यदि फ़ाइल टैब के साथ इंडेंट की जाती है, तो यह विभिन्न टैब आकारों का उपयोग करके फ़ाइल के नमूने को प्रस्तुत करने और आंतरिक तत्वों के लाइन-ओवर-लाइन संरेखण की तरह हेयुरेटिक्स के अनुसार इसे देखते हुए, सही टैब आकार का पता लगाती है।
यह काफी अच्छी तरह से काम करता है कि मैंने एल्गोरिथ्म को सालों पहले ट्विक करना बंद कर दिया था। यदि यह भ्रमित हो जाता है, तो यह लगभग हमेशा होता है क्योंकि फ़ाइल में स्वरूपण समस्याएँ होती हैं, जैसे एक ही समय में कई सम्मेलनों का उपयोग।
यह फ़ाइल प्रकार का "अज्ञेयवादी" भी है और विभिन्न भाषाओं के साथ अच्छी तरह से काम करता है। मैं इसका उपयोग केवल C पर ही नहीं करता, बल्कि शेल स्क्रिप्ट, लिस्प, मेकफाइल्स, एचटीएमएल और आपके पास क्या है।
ध्यान दें कि यह स्वरूपण के अन्य मापदंडों को संभाल नहीं सकता है, जो परियोजना-विशिष्ट हो सकता है, उदाहरण के लिए, सी फ़ाइलों में, चाहे caseएक switchस्टेटमेंट में लेबल इंडेंट किए गए हों या नहीं, या लिपटे फ़ंक्शन तर्क सूचियां केवल इंडेंट की गई हैं, या गठबंधन की गई हैं तर्क सूची के कोष्ठक खोलना। विम के पास उस तरह की चीज़ों के लिए सेटिंग्स हैं, और इसलिए शैली का विश्लेषण करने और उन मापदंडों को आउटपुट करने के लिए कार्यक्रम को काफी बढ़ाया जा सकता है।