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


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<)। किन्दा समझ में आता है, स्थानीय सेटिंग्स वर्तमान वैश्विक मूल्यों के लिए खुले में शुरू होती हैं, फिर स्थानीय मान रखें जब तक कि अन्यथा न कहा जाए। यदि खेल में कोई स्थानीय सेटिंग नहीं है, तो इसे किसी भी नए वैश्विक मूल्यों को चुनना चाहिए ।

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

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