जब टैब Vs. पर आता है तो विम बहुत मिलनसार होता है अंतरिक्ष प्राथमिकताएं। जैसा कि मैंने इसे समझा, tabstopसेटिंग एक टैब वर्ण की चौड़ाई को इंगित करता है। shiftwidthसेटिंग निर्दिष्ट कितने कॉलम के लिए वेतन वृद्धि / कमी का उपयोग करते समय <<और >>, आदेशों जबकि softtabstopसेटिंग को प्रभावित करती है खाली स्थान के की राशि सम्मिलित करने के लिए जब आप प्रेस Tabडालने मोड में कुंजी। यदि expandtabचालू है, तो टैब कुंजी softtabstopअंतरिक्ष वर्णों की संख्या सम्मिलित करती है । जबकि expandtabस्विच ऑफ के साथ , Tabकुंजी दबाने से टैब + स्पेस वर्णों की एक छोटी से छोटी संभावित संख्या मिलती है जो मेल खाती है softtabstop। (मुझे सही जवाब दो अगर मैं गलत हूँ।)
यह अंतिम बिंदु मुझे आश्चर्यचकित करता है: क्या कोई व्यावहारिक मामला है जहां आप नहीं चाहेंगे shiftwidth == tabstop && tabstop == softtabstop? मैं एक के बारे में सोच भी नहीं सकता। जहां तक मेरा सवाल है, यह सबसे सुविधाजनक होगा अगर मैं इन तीनों को एक ही असाइनमेंट में एक ही मूल्य पर सेट कर सकूं। उदा कॉलिंग:
:set stab=4
जो चलने के बराबर होगा:
:set tabstop=4 softtabstop=4 shiftwidth=4
क्या कोई सुझाव दे सकता है कि यह कैसे किया जा सकता है?
अपडेट करें
बहुत अधिक php , hobbs और kaiser.se से अब तक उत्तरों के लिए धन्यवाद । व्यक्तिगत रूप से प्रत्येक का उत्तर देने के बजाय, मैं यहां प्रश्न को अपडेट कर रहा हूं।
सॉफ्टटैबटॉप को एक्सपेंडेबट के साथ बंद कर दिया गया
मैंने ऊपर कहा कि विस्ताराटैब स्विच ऑफ के साथ, टैब कुंजी सम्मिलित करता है जो कि मिलान करने वाले टैब + स्पेस वर्णों की सबसे छोटी संभव संख्या सम्मिलित करता है softtabstop। मैं उसके साथ खड़ा हूं, लेकिन मुझे लगता है कि मुझे समझाने की जरूरत है कि मेरा क्या मतलब था। मैं कुछ उदाहरणों के माध्यम से ऐसा करने का प्रयास करूंगा। साथ पालन करने के लिए, चलाएं :set listताकि आप टैब वर्ण देख सकें।
tabstop=4 softtabstop=2 shiftwidth=4 noexpandtab
सम्मिलित मोड में, टैब कुंजी आवेषण 2 स्थान वर्णों को दबाता है। टैब कुंजी को दूसरी बार दबाएं, और दो और अंतरिक्ष वर्ण (कुल 4 अंतरिक्ष वर्णों के लिए) डालने के बजाय यह पिछले 2 स्थानों को एक एकल टैब वर्ण के साथ बदल देता है। टैबस्टॉप 4 पर सेट है, इसलिए एक एकल टैब वर्ण में 4 रिक्त स्थान के समान चौड़ाई है।
tabstop=4 softtabstop=6 shiftwidth=4 noexpandtab
सम्मिलित मोड में, टैब कुंजी आवेषण 1 टैब वर्ण और 2 रिक्त स्थान दबाते हैं। टैब वर्ण की चौड़ाई 4 है, इसलिए कुल चौड़ाई 6 है, और इसे 3 वर्णों का उपयोग करके प्राप्त किया गया है। टैब कुंजी को दूसरी बार दबाने पर दो टैब वर्ण सम्मिलित होते हैं, और उन दो रिक्त स्थान को हटा देता है जिन्हें पहले डाला गया था। कुल चौड़ाई 12 है, और इसे 3 वर्णों का उपयोग करके प्राप्त किया जाता है।
इन दोनों उदाहरणों में, Vim सॉफ्टटैबस्टॉप से मेल खाने वाले टैब + स्पेस वर्णों की न्यूनतम संभव संख्या सम्मिलित करता है।
अगर मैं एक्सपेंडेबट स्विच ऑफ के साथ काम कर रहा हूं, तो मैं खुद को अतिरिक्त दानेदार नियंत्रण की इच्छा नहीं देख सकता हूं जो सॉफ्टटॉपस्टॉप को टैबस्टॉप से अलग मूल्य पर सेट करके प्राप्त किया जा सकता है। यह अभी भी मेरे लिए सेट करने में सक्षम होने के लिए tabstop, softtabstopऔर shiftwidthएक ही कमांड के साथ समान मूल्य के लिए उपयोगी होगा ।
क्या एक्सपैंडटैब सॉफ्टटैबटॉप को बेमानी बनाता है?
tabstop=4 softtabstop=0 shiftwidth=4 expandtab
सम्मिलित मोड में, टैब कुंजी आवेषण 4 स्थानों को दबाता है। डिलीट की को दबाने से सिंगल स्पेस डिलीट हो जाता है - इसलिए अगर गलती से टैब की चाबी मार दी तो आपको 4 बार बैकस्पेस देना होगा।
tabstop=4 softtabstop=4 shiftwidth=4 expandtab
सम्मिलित मोड में, टैब कुंजी आवेषण 4 स्थानों को दबाता है। बैकस्पेस कुंजी दबाने से 4 रिक्त स्थान नष्ट हो जाते हैं।
अगर मैं expandtabस्विच ऑन के साथ काम कर रहा हूं, तो मैं टैब कुंजी आवेषण के रूप में व्हाट्सएप की समान मात्रा को हटाने के लिए डिलीट कुंजी पसंद करूंगा। तो इस मामले में भी, मुझे लगता है कि यह एक ही मूल्य को निर्दिष्ट करने में सक्षम होना उपयोगी होगा tabstop, softtabstopऔर shiftwidthसाथ ही साथ।
एक शॉर्टकट अभी भी उपयोगी होगा
यह बहुत अच्छा है कि विम इतना लचीलापन प्रदान करता है, लेकिन मैं खुद को इसकी आवश्यकता नहीं देख सकता। मैं बस एक टैब की चौड़ाई का चयन करने में सक्षम होना चाहता हूं, और चाहे वह 'हार्ड' टैब (टैब कैरेक्टर का उपयोग कर) हो या 'सॉफ्ट' टैब (स्पेस से बना) हो। हार्ड और सॉफ्ट टैब्स के बीच टॉगल करना काफी आसान है ( :set expandtab!), लेकिन मेरी इच्छा है कि टैब की चौड़ाई सेट करने के लिए यह अधिक सीधा था, बिना 3 अलग-अलग मापदंडों के साथ फील करना।
तो कुछ के लिए मेरा प्रस्तावित सुझाव :set stab=4अभी भी मुझे अच्छा लगता है।