मैं विम में टैब का आकार कैसे बदलूं?


172

हर बार जब मैं CSS में चयनकर्ता जोड़ता हूं और मैं Enterसंपत्तियों को परिभाषित करने के लिए दबाता हूं , तो यह इस तरह समाप्त होता है:

#selector {
        property: value;
}

(8 अंतरिक्ष टैब्स)

मैं इसे इस तरह बनाने के लिए विम को कैसे कॉन्फ़िगर कर सकता हूं:

#selector {
    property: value;
}

(4-स्पेस टैब)


4
क्या आप 4 स्थानों की चौड़ाई का एक टैब चाहते हैं? चार रिक्त स्थान? या 1 अंतरिक्ष चौड़ाई के चार टैब? वे अलग-अलग चीजें हैं, और आप स्पष्ट नहीं हैं। किसी भी मामले में, पढ़ने के साथ शुरू करें: वह ts,: वह sw, और: उसने विस्तार किया
abeyer

जवाबों:


102

zoul के जवाब में विस्तार करते हुए:

आप एक विशेष फ़ाइल प्रकार संपादित करते समय उपयोग विशिष्ट सेटिंग करने के लिए सेटअप विम करना चाहते हैं, तो आप autocommands का उपयोग करना चाहेंगे:

autocmd Filetype css setlocal tabstop=4

यह इसे बना देगा ताकि टैब 4 रिक्त स्थान के रूप में प्रदर्शित हों। जब आप टैब दबाएंगे, तो सेटिंग करने expandtabसे विम वास्तव में रिक्त स्थान (उनमें से नियंत्रित होने की संख्या tabstop) डालने का कारण होगा ; आप softtabstopबैकस्पेस को ठीक से काम करने के लिए उपयोग करना चाहते हैं (यानी, इंडेंटेशन को कम कर सकते हैं जब ऐसा होता है कि टैब का उपयोग किया जाना चाहिए, बजाय एक बार में हमेशा एक चार को हटाना)।

कैसे चीजों को सेट अप करने के लिए के रूप में एक पूरी तरह से शिक्षित निर्णय करने के लिए, आप पर विम डॉक्स पढ़ने के लिए की आवश्यकता होगी tabstop, shiftwidth, softtabstopऔर expandtab। सबसे दिलचस्प बिट अंतर्गत पाया जाता है expandtab( :help 'expandtab):

विम में टैब का उपयोग करने के चार मुख्य तरीके हैं:

  1. 8 पर हमेशा 'टैबस्टॉप' रखें, 'सॉफ्टटैबटॉप' और 'शिफ्ट' को 4 (या 3 या जो भी आप पसंद करते हैं) सेट करें और 'noexpandtab' का उपयोग करें। तब विम टैब और रिक्त स्थान के मिश्रण का उपयोग करेगा, लेकिन टाइप करना और व्यवहार करना होगा जैसे टैब हर 4 (या 3) वर्णों में दिखाई देता है।

  2. Set टैबस्टॉप ’और 'शिफ्ट एक्सपोजर’ को आप जो चाहें पसंद करें और ab एक्सपेंडेब ’का उपयोग करें। इस तरह आप हमेशा अंतराल डाल देंगे। जब 'टैबस्टॉप' को बदल दिया जाता है, तो फ़ॉर्मेटिंग कभी गड़बड़ नहीं होगी।

  3. जो कुछ भी आप पसंद करते हैं और एक का उपयोग करें 'tabstop' और 'shift Shift' सेट करें फिर फ़ाइल को संपादित करते समय इन मूल्यों को निर्धारित करने के लिए। केवल काम करता है जब विम का उपयोग कर फ़ाइल को संपादित करने के लिए।

  4. हमेशा 'tabstop' और 'shiftwidth' को समान मान और 'noexpandtab' पर सेट करें। इसके बाद किसी भी टैबस्टॉप सेटिंग के लिए काम करना चाहिए (शुरुआती इंडेंट के लिए) जो लोग उपयोग करते हैं। यदि आप ऐसा करते हैं, तो पहले गैर-रिक्त स्थान के रूप में सम्मिलित किए जाने के बाद टैब करना अच्छा होगा। अन्यथा 'टैबस्टॉप' बदले जाने पर संरेखित टिप्पणियाँ गलत होंगी।


इसके अलावा, संभवतः बाद में अपना दिमाग बदलने के बारे में बहुत चिंता न करें ... देखें :help retab(संस्करण की जांच करें)।
मिशैल मार्कीज

उपयोग .vimrc, या एक विकल्प के साथ ऑटोकैड पूरक का उपयोग होता है?
जोश डेसमंड

224
:set tabstop=4
:set shiftwidth=4
:set expandtab

यह टैब वर्ण के बजाय चार स्थान सम्मिलित करेगा। रिक्त स्थान थोड़ा और अधिक "स्थिर" हैं, जिसका अर्थ है कि रिक्त स्थान के साथ पाठ ब्राउज़र और किसी अन्य अनुप्रयोग में समान दिखाई देगा।


83
हां, लेकिन टैब शब्दार्थ हैं (प्रत्येक टैब का अर्थ इंडेंटेशन की 1 परत है), जबकि रिक्त स्थान विशुद्ध रूप से प्रस्तुतिकरण हैं। या दूसरे शब्दों में, टैब का उपयोग करने से अन्य लोगों को आपके कोड को देखने में मदद मिलेगी लेकिन वे व्यापक रूप से प्रदर्शित होंगे, जबकि रिक्त स्थान इसकी अनुमति नहीं देंगे।
के प्राइम

11
ध्यान दें कि यदि आप अपने टेक्स्ट को टैब- हकी के समान दूरी पर ले जाने के लिए '>' और '<' पसंद करते हैं , तो आप बस अपने vimrc में रख सकते हैं और इसे हमेशा के लिए भूल सकते हैं, क्योंकि यह vim को बताता है कि आप हमेशा इसे मैच करना चाहते हैं । :set shiftwidth=0tabstop
SeldomNeedy

132

एक सत्र के लिए परिवर्तन करने के लिए इस आदेश का उपयोग करें:

:set tabstop=4

परिवर्तन स्थाई बनाने के लिए, के लिए इसे जोड़ने ~/.vimrcया ~/.vim/vimrc:

set tabstop=4

यह सभी फ़ाइलों को प्रभावित करेगा, न कि केवल सीएसएस। केवल सीएसएस फ़ाइलों को प्रभावित करने के लिए:

autocmd Filetype css setlocal tabstop=4

जैसा कि मिचेल के उत्तर में कहा गया है ।


2
यदि आप टैब को चार स्थानों के रूप में कार्य करना चाहते हैं, तो .Zimrc उत्तर के साथ @Zoul में अन्य पंक्तियों को भी जोड़ना आवश्यक है; यही है, .vimrc में भी 'सेट शिफ्टवर्क = 4' और 'सेट एक्सपेंडेबॅब' जोड़ें।
qartal

7
सवाल यह है कि "मैं विम में टैब का आकार कैसे बदलूं?"
कीथ

यह मैं इसे कैसे करना होगा है। और सुनिश्चित करने के लिए ~/.vimrc: हमेशा समर्थित है, मैं आमतौर पर मेरी ड्रॉपबॉक्स में फ़ाइल को बचाने फ़ोल्डर तो डेस्कटॉप के लिए एक प्रतीक लिंक बनानेln -s /home/myfolder/Dropbox/.vimrc ~
ENCHANCE

41

इस पृष्ठ के कई उत्तर वर्णित समस्या के लिए 'एकल उपयोग' फिक्स हैं। मतलब, अगली बार जब आप vim के साथ कोई डॉक्यूमेंट खोलेंगे, तो पिछली टैब सेटिंग वापस आ जाएगी।

यदि कोई व्यक्ति टैब सेटिंग को स्थायी रूप से बदलने में रुचि रखता है:


11
यह रिक्त स्थान सम्मिलित करता है, टैब नहीं।
सुपरनोवा

5
@Supernovah टैब पाने के लिए आप "विस्ताराटब" को हटा सकते हैं
कोमारधोमर

28

एक के रूप में vim में एक लाइनर :

:set tabstop=4 shiftwidth=4 expandtab

के लिए स्थायी सेटअप , ये पंक्तियां जोड़ें ~ / .vimrc :

set tabstop=4
set shiftwidth=4
set expandtab

6

अपडेट करें

यदि आप किसी विशेष परियोजना में काम कर रहे हैं तो मैं Editorconfig का उपयोग करने की अत्यधिक अनुशंसा करता हूं

यह आपको एक .editorconfigरिपॉजिटरी के मूल में एक फ़ाइल को परिभाषित करने देता है जो आप अपने रिपॉजिटरी में प्रत्येक फ़ाइल प्रकार के लिए उपयोग किए जाने वाले इंडेंटेशन को परिभाषित करते हैं।

उदाहरण के लिए:

root = true

[*.css]
charset = utf-8
indent_style = space
indent_size = 4

[*.js]
charset = utf-8
indent_style = space
indent_size = 2

एक विम प्लगइन है जो आपके द्वारा खोली गई फ़ाइल के लिए कॉन्फ़िगर फ़ाइल के अनुसार स्वचालित रूप से विम को कॉन्फ़िगर करता है।

उसके शीर्ष पर .editorconfigफ़ाइल स्वचालित रूप से कई अन्य आईडीई और संपादकों पर समर्थित है, इसलिए यह विभिन्न वातावरण वाले उपयोगकर्ताओं के बीच सहयोग करने का सबसे अच्छा विकल्प है।

मूल ANSWER

यदि आपको अक्सर आकार बदलने की आवश्यकता होती है और आप इसे किसी विशिष्ट फ़ाइल प्रकार से बांधना नहीं चाहते हैं, तो आप वरीयताओं को जल्दी से स्विच करने के लिए अपने .vimrc फ़ाइल पर पूर्वनिर्धारित कमांड रख सकते हैं:

nmap <leader>t :set expandtab tabstop=4 shiftwidth=4 softtabstop=4<CR>
nmap <leader>m :set expandtab tabstop=2 shiftwidth=2 softtabstop=2<CR>

यह चाबियों के आकार के दो अलग-अलग सेटों को मैप करता है। आप जो भी कुंजी चाहते हैं, उसके लिए आप इसे फिर से शुरू कर सकते हैं।

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