`Softtabstop` किसके लिए प्रयोग किया जाता है?


21

मैं विम में इन टैब संबंधित सेटिंग्स के बारे में पता कर रहा हूँ:

  • ts
  • sw
  • expandtab
  • smarttab
  • sts

मेरी सामान्य सेटिंग है set ts=4 sw=4 expandtab smarttab

लेकिन stsप्रलेखन के अनुसार , यदि expandtabसेट नहीं किया जाता है , तो यह टैब आकार के लिए रिक्त स्थान की वांछित संख्या बनाने के लिए रिक्त स्थान और टैब के संयोजन का उपयोग करने का प्रयास करेगा।

मैं वास्तव में इस सेटिंग के लिए एक उपयोगी परिदृश्य के बारे में नहीं सोच सकता: कोई व्यक्ति टैब और रिक्त स्थान की एक निश्चित संख्या क्यों चाहता है जो चीजों को गड़बड़ कर सकता है? ऐसा करने का एकमात्र लाभ जो मैं सोच सकता हूं, वह है पात्रों की संख्या कम करना और इस प्रकार फ़ाइल का आकार कम करना, जो मुझे अजीब लगता है।

जवाबों:


20

जैसा कि softtabstopदस्तावेज़ में उल्लेख किया गया है, यह उपयोगी है यदि आप डिफ़ॉल्ट टैब स्टॉप 8 का आकार रखना चाहते हैं, लेकिन एक फ़ाइल को संपादित करें जैसे कि टैब स्टॉप का आकार कुछ और था। उदाहरण के लिए, यदि आप कोड संपादित करते समय 4 का एक खरोज स्तर चाहता था, लेकिन कुछ टिप्पणियां इस तरह के एक मेज है कि 8 का टैब स्टॉप पर निर्भर है, तो आप सेट कर सकते हैं के रूप में टैब-दांतेदार पाठ किया था stsकरने के लिए 4

एक अंतर set ts=4 sw=4 expandtab smarttabजिसे मैं आपकी टैब सेटिंग्स ( ) और sts(जैसे set ts=8 sts=4) के उपयोग के बीच देखता हूं , जब पाठ की एक पंक्ति के बीच में रिक्त स्थान पर बैकस्पेसिंग होती है। उदाहरण के लिए, पाठ की निम्नलिखित पंक्ति पर विचार करें, जहां ·एक स्थान इंगित करता है:

some·text·······more·text

डालने मोड में, बस से पहले कर्सर ले जाने mकी more text। आपकी सेटिंग के साथ, बैकस्पेस दबाने से एक सिंगल स्पेस डिलीट हो जाता है। लेकिन उपयोग करते समय sts=4, बैकस्पेस पिछले टैब स्टॉप के सभी रास्ते को हटा देता है, क्योंकि यह व्यवहार करेगा कि रिक्त स्थान इसके बजाय एक टैब वर्ण थे।

आप sts=4अपनी सेटिंग के अलावा सेट कर सकते हैं और टैब और स्पेस को मिक्स नहीं करते हुए मिड-लाइन बैकस्पेस व्यवहार प्राप्त कर सकते हैं । टैब का विस्तार चार स्थानों पर किया जाएगा, लेकिन आप एक पंक्ति के बीच में कई स्थानों पर बैकस्पेस दे सकते हैं।


3

नीचे उदाहरण देखें,

// Start vim without loading your vimrc. set only tabstop=8 softtabstop=4.
// This makes <Tab> in insert mode equals to 4 <Space> length at max.

// In insert mode, type 12, one <Tab>, 5. We get insertion below,
12··5
// Quit insert mode. Move cursor back, we find 2 <Space> inserted.

// In insert mode, type 12, two <Tab>, 9. We get insertion below,
12······9
// Quit insert mode. Move cursor back, you find a <Tab> inserted.

// In insert mode, type 12, three <Tab>, 3. We get insertion below,
12··········3
// Move the cursor back, you find a <Tab> and 4 <Space> inserted.

// We can even set sotftabstop=12, but this time we only need type one <Tab>, then 3.
12··········3
// Move the cursor back, you find a <Tab> and 4 <Sapce> inserted.

तो tabstopइस बारे में है कि कैसे विस्तृत Tabपरिभाषित किया जाता है, softtabstopजबकि टाइप करते समय कर्सर कितनी दूर जाता है Tab। जब वे समान मूल्य के लिए सेट नहीं होते हैं, तो इसका मतलब है कि यदि आप Tabकीस्ट्रोक को मारते हैं , तो यह एक Tabचरित्र को तुच्छ नहीं करता है । जो कुछ भी मामलों में, यह विम है जो एक बार जब आप सम्मिलित मोड को छोड़ देते हैं। विम पहले के रूप में कई के tabstopरूप में यह कर सकते हैं सम्मिलन से मेल करने की कोशिश करेंगे; अगर अंत में यह एक पूर्ण नहीं कर सकता है tabstop, विम बस द्वारा क्षतिपूर्ति करता है Space

थोड़ा और बोलने के लिए, यदि आप सेट करते हैं expandtab, तो यह विम के लिए कहने के बराबर है:

कृपया गणना करने की जहमत न उठाएं कि कितने की जरूरत है Tabऔर Sapceक्या है। सीधे शब्दों में डालें Space


आपका जवाब एक शेख़ी की तरह लगता है, और सवाल का जवाब देने के लिए प्रकट नहीं होता है।
हर्ब वोल्फ

@ हिर्ब वोल्फ काश मेरा जवाब पीओ को यह पता लगाने में मदद कर सकता कि क्या होता है जब असामान्य सेटिंग की तरह बनाया जाता है :set st=7 sts=13। चूंकि विम न केवल कोडिंग के लिए डिज़ाइन किया गया है, बल्कि मूल रूप से टेक्स्ट एडिटिंग के लिए है।
चेन XI

1

सरल उत्तर:

उदाहरण के लिए, यह प्रोग्रामिंग के लिए अत्यंत उपयोगी है, विशेष रूप से पायथन में, जिसमें सारणीकरण महत्वपूर्ण है। जब आप बैकस्पेस को sts = 4 से दबाते हैं, तो यह लाइन को अनटैब करेगा, एक सिंगल स्पेस कैरेक्टर को डिलीट नहीं करेगा।

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