क्या "सेट" कमांड केवल सक्रिय बफर को प्रभावित करता है?


15

मेरे पास दो भैंसे हैं:

:ls
  1 %a   ".vimrc"                       line 1
  2 #h   "script.sh"                    line 1
Press ENTER or type command to continue

जैसा कि ऊपर देखा गया है, मैं पहले बफर पर हूं। अब अगर मैं :set softtabstop=16कमांड को अंजाम देता हूं , तो मुझे उम्मीद है कि यह दोनों बफर्स ​​को प्रभावित करेगा। हालांकि, यह मामला नहीं है- जबकि stsपहले बफर के लिए मूल्य वास्तव में बदल गया है और Tabचार टैब वर्णों ( ts=4) को सम्मिलित करता है , तो दूसरे बफर के लिए stsमूल्य अभी भी है 4:

:ls
  1 #h + ".vimrc"                       line 1
  2 %a + "script.sh"                    line 1
  softtabstop=4
Press ENTER or type command to continue

ऐसा क्यों हैं? मैंने सोचा कि setसभी बफ़र्स को setlocalप्रभावित करता है और केवल सक्रिय बफर को प्रभावित करता है ।।

जवाबों:


26

विकल्प वैश्विक , खिड़की-स्थानीय या बफर-स्थानीय हो सकते हैं

जब आप :setएक वैश्विक विकल्प होते हैं, तो नया मूल्य वैश्विक होता है

जब आप :setlocalएक वैश्विक विकल्प होते हैं, तो नया मान स्थानीय होता है

जब आप :setएक स्थानीय विकल्प, नया मान है स्थानीय

softtabstopएक बफर-लोकल विकल्प होने के नाते , इसके मूल्य को बदलने से केवल वर्तमान बफर प्रभावित होता है।

एक विकल्प के "गुंजाइश" में संकेत दिया गया है :help option:

'softtabstop' 'sts'    number    (default 0)
                       local to buffer
                       {not in Vi}
Number of spaces that a <Tab> counts[...]

:help local-options, :help :setlocalऔर :help global-localअधिक विवरण में वह सब समझाएं।


3
वहाँ भी एक है :setglobal
सातो का सतपुड़ा

3
इसके अलावा, कुछ विकल्प वैश्विक हैं, चाहे आप उन्हें कैसे भी सेट करें। जैसे 'encoding'
एंटनी

क्या बफर आईडी द्वारा स्थानीय फ़ंक्शन सेट करने का एक तरीका है और कुछ vimscriptफ़ंक्शन कॉल के साथ विकल्प मान ?
सेंटएंटारियो 5

एक फ़ंक्शन है setbufvarजिसका उपयोग उस को प्राप्त करने के लिए किया जा सकता है। पहले तो नहीं मिला।
सेंट अंटारियो 5

2

एक विशेषज्ञ, @ मर्टिन नहीं, लेकिन पढ़ने से :help setआपको stsप्रत्येक बफर में स्थानीय मान को " परेशान " करने की आवश्यकता होगी , ताकि बफर किसी भी नए वैश्विक मूल्य को उठा सके। setlocal sts= (या बूलियन झंडे के लिए setlocal flag<)। किन्दा समझ में आता है, स्थानीय सेटिंग्स वर्तमान वैश्विक मूल्यों के लिए खुले में शुरू होती हैं, फिर स्थानीय मान रखें जब तक कि अन्यथा न कहा जाए। यदि खेल में कोई स्थानीय सेटिंग नहीं है, तो इसे किसी भी नए वैश्विक मूल्यों को चुनना चाहिए

फिर से, एक विशेषज्ञ नहीं होने के नाते, मुझे लगता है कि दूसरे बफर में बाद में पहले एक स्पष्ट स्थानीय सेटिंग थी एक अनुमान को खतरा होगा set50/50 की तुलना में अधिक है कि मेरी समझ गलत है, के रूप में मैं अभी भी क्या बीच का अंतर स्पष्ट नहीं कर रहा हूँ setऔर setglobalहै

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