विम 80 के बजाय 79 में अधिकतम पाठ चौड़ाई क्यों सेट करता है?


13

मैं विम में कुछ डिफ़ॉल्ट मूल्यों के बारे में थोड़ा हैरान हूँ। विशेष रूप से, के लिए gq{motion}, कहा जाता है कि

[...]
If the 'textwidth' option is 0, the formatted line
length is the screen width (with a maximum width of
79).

मैंने सोचा कि अगर इसे 80इसके बजाय अधिकतम चौड़ाई निर्धारित करना होता तो इसे और अधिक समझ में आना चाहिए था ।

क्या कोई मुझे इस बारे में बता सकता है? मुझे लगता है मुझे कुछ याद आ रहा है।


1
ठीक है, 80एक बहुत ही मनमाना "मानक" है जिससे शुरू करने के लिए ... क्यों नहीं 79? अब, पर रैपिंग लाइनों 79एक में 80कॉलम चौड़ा टर्मिनल सही करने के लिए थोड़ा और कक्ष देता है और हो सकता है स्पष्टता में सुधार होगा। github.com/vim/vim/blob/…
romainl

2
हो सकता है, 80कॉलम-वाइड टर्मिनल पर आखिरी कॉलम रैपिंग सिंबल के लिए आरक्षित था? फिर भी, यदि आपके पास लाइन नंबर हैं, तो वे निश्चित रूप से सिर्फ एक कॉलम से अधिक लेंगे। तो, मैं अभी भी हैरान हूँ। इसके अलावा, आपके द्वारा लिंक किए गए कोड से, इसका 79उपयोग किया जा सकता अधिकतम मूल्य है? शायद मुझे समझ नहीं आया कि मैंने क्या पढ़ा।
19

3
... या आप बस के साथ सेट textwidthऔर किया जा सकता है।
वैनलेजर

13
80 पुराने हार्डवेयर टर्मिनलों के स्तंभों की संख्या और बाद में एमएस डॉस (टेक्स्ट मोड) स्क्रीन है। tw=79इसके बजाय tw=8080 स्तंभों पर एक पंक्ति में 80 वर्णों को प्रदर्शित करने के लिए टर्मिनल एक अतिरिक्त नई रेखा प्रिंट करता है।
सातो कैटसुरा

7
हमेशा एक नई पंक्ति जोड़ी जाती है। यदि यह 80 वर्णों के विस्तृत टर्मिनल पर 81 वां वर्ण होता है, तो आपको एक पूर्ण पंक्ति मिलती है, जिसके बाद एक खाली लाइन होती है।
सातो सतपुड़ा

जवाबों:


7

मेरे पास कोई सबूत नहीं है कि यह क्यों 79 को मूल रूप से चुना गया था, लेकिन उस मूल्य पर इसे छोड़ने का एक अच्छा कारण है क्योंकि यदि आप 'list'एक मूल्य के साथ उपयोग करते हैं eol, 'listchars'तो सूची का प्रदर्शन 80-वर्ण का कारण होगा- लंबाई लाइन 80-चरित्र-विस्तृत टर्मिनल में अगली पंक्ति पर लपेटने के लिए।

यदि रेखा केवल 79-वर्ण लंबी है, तो 80 वीं पंक्ति अंत-पंक्ति के listcharलिए बैठने के लिए स्वतंत्र है।


मुझे नहीं मिला। मैं कहां उपयोग करने वाला हूं 'list'? यह क्या करना चाहिए है?
Atcold

@Atcold यह एक ऐसा विकल्प है जो ऐसे पात्रों का कारण बनता है जो आमतौर पर स्क्रीन पर प्रदर्शित होने के लिए अदृश्य होते हैं (जैसे कि पंक्ति का अंत)। कार्रवाई में इसे देखने के लिए देखें :help 'list'या बस चलाने :set listका प्रयास करें ।
रिच

:set listज्यादा कुछ नहीं करता। मुझे यकीन है मेरे पास नहीं है eolमें listchars। मुझे यकीन नहीं है कि यह 79किरदारों के पीछे का कारण है । मेरा मानना ​​है कि @ sato-katsura की टिप्पणी में सबसे अच्छा जवाब है।
Atcold

eolमें है 'listchars'डिफ़ॉल्ट रूप से, लेकिन निश्चित रूप से यह आपके config में संभव कुछ इसे हटा दिया गया है। मैं अपने उत्तर में विशेष रूप से बताता हूं कि मेरे पास यह मानने का कोई कारण नहीं है कि यह ऐतिहासिक कारण था कि 79 मूल रूप से चुना गया था। मैं अभी एक और कारण दे रहा हूं कि यह अभी भी उपयोग करने के लिए एक अच्छा मूल्य क्यों है।
रिच

@Atcold। न्यूलाइन डिफ़ॉल्ट रूप से प्रदर्शित नहीं होता है, इसके लिए अतिरिक्त वर्ण आरक्षित करने का कोई मतलब नहीं है।
क्रिश्चियन ब्रेबेंड

6

यह एहसास है कि इस "डिफ़ॉल्ट" केवल पर लागू होता है महत्वपूर्ण है gqऔर gwहै कि खंड में वर्णित के रूप में आदेश और ऑटो प्रारूप। डिफ़ॉल्ट textwidth०. है। इसके अलावा, :rightऔर :centerto० के लिए डिफ़ॉल्ट,, ९ नहीं।

क्यों 79 में चुना गया था के लिए, यह नहीं एक सीधा पकड़ से अधिक vi से किया जा सकता है के बाद से gq, gwऔर स्वतः प्रारूप vi में मौजूद नहीं है। यह ज्यादातर अटकलें हैं, लेकिन मेरा मानना ​​है कि ऑटो के प्रारूप के लिए 79 डिफ़ॉल्ट को vi के मौजूदा ऑटो-रैपिंग के साथ स्थिरता के लिए चुना गया था। यह इसके लिए लागू होता है gqऔर gwयह एक दुष्प्रभाव है; कोई उम्मीद कर सकता है कि 80 को अन्यथा चुना गया होगा।

Vi (और यदि vim में textwidth=0) पाठ विंडो की चौड़ाई माइनस पर ऑटो-रैपिंग शुरू करता है wrapmargin। हालांकि, अगर wrapmargin=0, कोई ऑटो-रैपिंग नहीं होगी। इसका मतलब है कि यदि आप 80 कैरेक्टर लिमिट वाली ADM-3A का उपयोग कर रहे हैं wrapmargin=1, तो, ऑटो-रैपिंग के साथ अधिकतम चौड़ाई 79 है। इस व्यवहार का एक उल्टा यह है कि कर्सर को रहने के लिए एक जगह है जो देखने के इंतजार में है। अगला चरित्र यह तय करने से पहले होने वाला है कि कहां लपेटना है। बेशक, vi और vim कर्सर को अगली पंक्ति में रख सकते हैं (जैसा कि बहुत लंबा शब्द टाइप करते समय मनाया जाता है) लेकिन एक अतिरिक्त कॉलम छोड़ना थोड़ा अच्छा है।

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