जब विम एक मौजूदा फ़ाइल पढ़ता है, तो यह फ़ाइल एन्कोडिंग का पता लगाने की कोशिश करता है। फ़ाइल को लिखते समय, विम फ़ाइल एन्कोडिंग का उपयोग करता है जिसे यह पता चला (जब आप इसे अलग-अलग बताते हैं) को छोड़कर। तो एक फाइल जिसे UTF-8 के नाम से जाना जाता है, उसे UTF-8 के रूप में लिखा जाता है, लैटिन -1 के रूप में पाई गई एक फाइल को लैटिन -1 के रूप में लिखा जाता है, और इसी तरह।
डिफ़ॉल्ट रूप से, खोज प्रक्रिया क्रूड है। जब तक आप विम के साथ खुलने वाली हर फ़ाइल को लेटिन -1 मान लिया जाएगा, जब तक कि वह शीर्ष पर एक यूनिकोड बाइट-ऑर्डर मार्क का पता नहीं लगा लेती। एक बाइट-ऑर्डर मार्क के बिना एक यूटीएफ -8 फ़ाइल को संपादित करना मुश्किल होगा क्योंकि किसी भी मल्टीबैट पात्रों को बफर में एकल अक्षरों के बजाय चरित्र अनुक्रम के रूप में दिखाया जाएगा।
इससे भी बदतर, विम, डिफ़ॉल्ट रूप से, बफर में पाठ का प्रतिनिधित्व करने के लिए लैटिन -1 का उपयोग करता है। इसलिए यूटीएफ -8 फाइल बाइट-ऑर्डर मार्क के साथ लैटिन -1 में डाउन-कन्वर्सेशन द्वारा करप्ट हो जाएगी।
आंतरिक रूप से UTF-8 का उपयोग करने के लिए Vim को कॉन्फ़िगर करने के लिए समाधान है। यह वास्तव में, विम प्रलेखन में अनुशंसित है, और एकमात्र कारण यह कॉन्फ़िगर नहीं किया गया है कि बॉक्स से बाहर का रास्ता उपयोगकर्ताओं के बीच भारी भ्रम पैदा करने से बचने के लिए है जो विम को मूल रूप से लैटिन -1 संपादक के रूप में संचालित करने की उम्मीद करते हैं।
अपने में .vimrc, set encoding=utf-8विम जोड़ें और पुनः आरंभ करें।
या इसके बजाय, LANGयह इंगित करने के लिए पर्यावरण चर सेट करें कि UTF-8 आपकी पसंदीदा वर्ण एन्कोडिंग है। यह न केवल विम को प्रभावित करेगा बल्कि कोई भी सॉफ्टवेयर जो LANGयह निर्धारित करने के लिए निर्भर करता है कि इसे पाठ का प्रतिनिधित्व कैसे करना चाहिए। उदाहरण के लिए, यह इंगित करने के लिए कि पाठ अंग्रेजी में दिखाई देना चाहिए ( en), जैसा कि संयुक्त राज्य अमेरिका में बोला गया है ( US), UTF-8 ( utf-8), सेट के रूप में एन्कोडेड LANG=en_US.utf-8।
अब विम बफर में पाठ का प्रतिनिधित्व करने के लिए UTF-8 का उपयोग करेगा। साथ ही, यह किसी फ़ाइल में UTF-8 एन्कोडिंग का पता लगाने के लिए अधिक दृढ़ प्रयास भी करेगा। बाइट-ऑर्डर मार्क की तलाश के अलावा, यह लैटिन -1 में वापस आने से पहले एक बाइट-ऑर्डर मार्क के बिना UTF-8 के लिए भी जाँच करेगा। इसलिए यह UTF-8 में कोड की गई फ़ाइल को भ्रष्ट नहीं करेगा, और इसे संपादन सत्र के दौरान UTF-8 वर्णों को ठीक से प्रदर्शित करना चाहिए।
कैसे विम फ़ाइल एन्कोडिंग का पता लगाता है के बारे में अधिक जानकारी के लिए, विम दस्तावेज में विकल्प ।fileencodings
एन्कोडिंग कि विम आंतरिक रूप से उपयोग करता है की स्थापना के बारे में अधिक जानकारी के लिए,
विकल्प ।encoding
यदि आपको फ़ाइल को डिस्क पर वापस लिखते समय उपयोग किए गए एन्कोडिंग को ओवरराइड करने की आवश्यकता है, तो fileencoding
विकल्प देखें ।
.vimrc; वास्तव में एन्कोडिंग का डिफ़ॉल्ट मूल्य "लेट 1" या $ LANG से मूल्य है, जो मेरे सिस्टम पर सेट हैen_US.UTF-8। इस कारण से:set encodingदेता हैencoding=utf-8बॉक्स से बाहर। उम्मीद के मुताबिक, अगर LANG परेशान है, तो:set encodingदेता हैencoding=latin1। शानदार जवाब के लिए धन्यवाद!