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

1
Sean 22 सितंबर 2017, 13:11

2 जवाब

सबसे बढ़िया उत्तर

जब विम फ़ाइल खोलता है, तो यह सिंटैक्स हाइलाइटिंग को सक्षम करने के लिए फ़ाइल प्रकार का अनुमान लगाने का प्रयास करता है। जब आप "माइस्क्रिप्ट" नामक एक नई फ़ाइल खोलते हैं, तो प्रकार का अनुमान लगाने के लिए विम के पास कुछ भी नहीं है।

जब आप फ़ाइल लिखते हैं, तो आपके द्वारा लिखी जाने वाली पहली फ़ाइल #!/bin/sh (या समान) होती है, उसके बाद शेष स्क्रिप्ट होती है। इस बिंदु तक, विम ने पहले ही निर्धारित कर लिया है कि यह एक सादा पाठ फ़ाइल है, और सिंटैक्स हाइलाइटिंग नहीं करता है।

जब आप फ़ाइल को फिर से खोलते हैं, तो विम फ़ाइल की पहली पंक्ति देखता है, और समझता है कि यह एक शेल स्क्रिप्ट है। यह प्रकार को उचित रूप से सेट करता है, और सिंटैक्स जादू करता है।

हल करने के लिए, या तो फ़ाइल को एक एक्सटेंशन के साथ नाम दें जो इसके प्रकार का सुझाव देता है ("myscript.sh" नामक एक खाली फ़ाइल, संभवतः, एक शेल स्क्रिप्ट है), या मैन्युअल रूप से :set filetype=sh का उपयोग करके प्रकार सेट करें।

व्यक्तिगत रूप से, मुझे पहला फॉर्म बदसूरत लगता है (फ़ाइल नाम में फ़ाइल प्रकार क्यों शामिल करें?), और दूसरा याद रखना मुश्किल है। मैं बस फ़ाइल को बंद और दोबारा खोलता हूं :-)

1
Shachar Shemesh 22 सितंबर 2017, 15:28

Vi आमतौर पर फ़ाइल नाम एक्सटेंशन से उपयोग किए जाने वाले सिंटैक्स हाइलाइटिंग के प्रकार का अनुमान लगाता है। यदि आप किसी ऐसी फ़ाइल का संपादन कर रहे हैं जिसका अभी तक कोई नाम नहीं है, तो आपको उसे यह बताना होगा कि हाइलाइट कैसे करें:

:set filetype=html

0
Kevin Boone 22 सितंबर 2017, 13:19