मैं अपनी फ़ाइल को utf8 में बदलने के लिए विम का उपयोग कैसे कर सकता हूं?


118

मेरे पास एक टेक्स्ट फाइल है। मुझे इसे UTF8 बनाने के लिए कहा गया है। मैं विम के साथ ऐसा कैसे कर सकता हूं?



जवाबों:


179

यदि आप किसी फ़ाइल को latin1 के रूप में एन्कोडेड संपादित कर रहे हैं, तो आप पाएंगे कि उस बफर के लिए 'fileencoding' 'latin1' पर सेट है। इसलिए आपको फ़ाइल को सहेजने से पहले फ़ाइलकोड को मैन्युअल रूप से सेट करना होगा।

:set fileencoding=utf8
:w myfilename

यह भी ध्यान दें कि UTF8 फाइलें अक्सर बाइट ऑर्डर मार्क (BOM) से शुरू होती हैं, जो एंडियननेस को इंगित करता है। बीओएम वैकल्पिक है, लेकिन कुछ कार्यक्रमों को विशेष रूप से इसका इस्तेमाल फ़ाइल एन्कोडिंग निर्धारित करने के लिए। कुछ शर्तों के तहत विम BOM लिखेंगे लेकिन कभी-कभी ऐसा नहीं होगा। BOM यह स्पष्ट रूप से सेट करने के लिए:

:set bomb

अधिक जानकारी के लिए :help mbyte-optionsऔर :help utf8और :help bomb


(1) utf-8 endianness नहीं है की तरह: निर्देश काम ठीक करने के लिए बाहर कर देते हैं, लेकिन vim मदद बताते हैं , UTF-8 बीओएम केवल इंगित करता है कि फ़ाइल है UTF-8); 2) जब आप बाद में फ़ाइल को फिर से खोलते हैं, तो आपको set fileencoding=utf-8फिर से सामने आना होगा। विम ने बीओएम को नोटिस नहीं किया यदि आपने इसे एक लिखने के लिए कहा था (और यह वास्तव में इसे लिखता है)। Utf-8 काम करने के लिए, आपको उसकी या set encoding=utf-8अपनी स्टार्टअप सेटिंग्स में चाहिए। कम से कम, यह मेरे सिस्टम पर कहानी है।
स्टीन

35
:w ++enc=utf-8 %

फ़ाइल को utf-8 एन्कोडिंग में डिस्क पर लिखने के लिए।


5
हालांकि यह सही है, आपके उत्तर को एरिक जॉनसन की तुलना में इतने अधिक संग्रह को एकत्र नहीं करना चाहिए था। कारण यह है कि यदि आप सेट नहीं करते हैं fileencoding, तो :w ++enc=utf-8एक बार मान्य है, लेकिन अगली बार जब आप दौड़ेंगे :w, तो मूल्य का 'fileencoding'उपयोग किया जाएगा, और यदि आपने इसे नहीं बदला है (स्पष्ट रूप से संपादन करते समय, या फ़ाइल को फिर से लोड करके, उम्मीद करना यह 'fencs'उचित रूप से सेट किया गया है और वास्तविक एन्कोडिंग अच्छी तरह से पता लगाया गया है), पुरानी एन्कोडिंग वापस आ जाएगी।
बेनोइट

1
@ माइकलक्रेलिन-हैकर, बदलना fileencodingभी इस सवाल का एक वैध जवाब है, जिससे आईएमओ बुरी आदतों को जन्म नहीं देता है। लेकिन ठीक है, यह सिर्फ मेरे मन की बात है।
बेनोइट

3
@ बनिएत, मेरा मतलब यह नहीं है कि एरिक का जवाब मान्य नहीं है! अगर मुझे उनके उत्तर के बारे में कुछ भी अजीब लगता है, तो यह सामग्री नहीं है, बल्कि उन्होंने तेजी से उत्तराधिकार में सवाल और अपने स्वयं के प्रश्न का उत्तर क्यों दिया :)
माइकल क्रेलिन - हैकर

3
@ मिचेल क्रेलिन - हैकर: FAQ की जाँच करें। यह वास्तव में आपके अपने प्रश्न का उत्तर देने के लिए प्रोत्साहित किया जाता है। यह इस तरह एक क्यू एंड ए पृष्ठ का पूरा बिंदु है। यह कोई फर्क नहीं पड़ता कि कौन जवाब देता है।
0xC0000022L

2
@ 0xC0000022L, पिछली बार जब मैंने जाँच की थी (अब जाँच नहीं की है), तो शोध करने के बाद आने के बारे में कुछ था, एक मिनट में सवाल और जवाब पोस्ट करने के बारे में नहीं । उस ने कहा, मैं केवल इस बारे में बात कर रहा था कि उसके उत्तर के बारे में क्या अजीब है , न कि यह क्या अमान्य है या कुछ और।
माइकल क्रेलिन -
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.