मैं विम के साथ फ़ाइल की एन्कोडिंग को कैसे बदल सकता हूं?


235

मैं एक फ़ाइल की लाइन अंत को संशोधित करने के लिए विम का उपयोग करने के लिए उपयोग किया जाता हूं:

$ file file
file: ASCII text, with CRLF line terminators
$ vim file
:set ff=mac
:wq
$ file file
file: ASCII text, with CR line terminators

क्या फ़ाइल के यूनिकोड एन्कोडिंग को बदलने के लिए एक समान प्रक्रिया का उपयोग करना संभव है? मैं निम्नलिखित कोशिश कर रहा हूँ, जो काम नहीं करता है:

$ file file.xml
file.xml: Unicode text, UTF-16, little-endian
$ vim file
:set encoding=utf-8
:wq
$ file file.xml
file.xml: Unicode text, UTF-16, little-endian

मैंने किसी को यह कहते हुए देखा कि वह "fileencoding = utf-8 सेट कर सकता है, फिर फ़ाइल को अपडेट और लिख सकता है, और यह काम करता है," लेकिन मुझे कुछ याद आ रहा है, अन्यथा वह भ्रमित था। मुझे नहीं पता कि उसका क्या मतलब है "फिर अपडेट करें।"

जवाबों:


254

से दस्तावेज़ :

: ++ ++ = utf-8 Russian.txt लिखिए

इसलिए आपको राइटिंग कमांड के हिस्से के रूप में एन्कोडिंग को बदलने में सक्षम होना चाहिए।


2
अद्यतन प्रलेखन लिंक: vimdoc.sourceforge.net/htmldoc/usr_45.html#45.4
ब्रायन रोजर्स

163

ध्यान दें कि दोनों के बीच अंतर है

एन्कोडिंग सेट करें

तथा

फ़ाइलकोड सेट करें

पहले मामले में, आप टर्मिनल में दिखाए गए आउटपुट एन्कोडिंग को बदल देंगे। दूसरे मामले में, आप लिखी गई फ़ाइल के आउटपुट एन्कोडिंग को बदल देंगे।


1
धन्यवाद! Apache utf-8 का उत्पादन कर रहा था, इसलिए php था, इसलिए ब्राउज़र ने कहा, इसलिए vim ने कहा set encoding, और फिर भी पृष्ठों ने mangled वर्ण दिखाए जो कि iso-8859-1 के रूप में ठीक थे। का उपयोग कर set fileencodingएक बहुत 'लैटिन 1' दिखाया
एड्रियानो वरोली पियाज़ा

77

यह करने के लिए विम का उपयोग करते समय यह पूरी तरह से संभव है, आप बस आइकनव का उपयोग क्यों नहीं करते हैं? मेरा मतलब है - सिर्फ एन्कोडिंग रूपांतरण करने के लिए टेक्स्ट एडिटर लोड करना, बहुत छोटे नाखून के लिए बहुत बड़े हथौड़ा का उपयोग करने जैसा लगता है।

बस:

iconv -f utf-16 -t utf-8 file.xml > file.utf8.xml

और आपने कल लिया।


19
नीचे की तरफ, आइकॉन विंडोज पर आसानी से उपलब्ध नहीं हो सकता है।
एड्रियानो वरोली पियाज़ा

2
@ AdrianoVaroliPiazza न ही विम।

1
मैं कहता हूं कि कई "बस स्थापित करें" डाउनलोड, यहां तक ​​कि एक पोर्टेबल संस्करण "आसानी से उपलब्ध" का भी गठन करता है।
एड्रियानो वरोली पियाज़ा

2
@ adriano-varoli-piazza नहीं, iconv, सिग्विन और मिंगडब्ल्यू के साथ विंडोज पर उपलब्ध है, जैसा कि @ कोडर-टिम नोट किया गया है।
t0r0X

1
@mario नहीं, Vim बहुत आसानी से विंडोज पर उपलब्ध है: vim.org/download.php#pc
t0r0X

52

अपने कदमों की तरह, फाइलकोडिंग सेट करना चाहिए। हालाँकि, मैं संपादक को UTF8 के रूप में फ़ाइल पर विचार करने में मदद करने के लिए एक "सेट बम" जोड़ना चाहूंगा।

$ vim file
:set bomb
:set fileencoding=utf-8
:wq

8
आपके उत्तर के लिए धन्यवाद, इसने मुझे UTF बाइट ऑर्डर मार्क के बारे में और जानने के लिए प्रेरित किया। हालाँकि, FYI करें, BOM की स्थापना करना UTF-8 के लिए अनावश्यक / असंगत लगता है क्योंकि यह 16 या 32 की तरह एक निश्चित बाइट-लंबाई प्रारूप नहीं है । स्पष्टीकरण और संदर्भ के लिए यहाँ देखें । यह विम के लिए एक समस्या (और यहां तक ​​कि सहायक) नहीं है, मैंने सोचा था कि लोगों को सिर्फ इतना पता होना चाहिए कि यह कहीं और संगतता मुद्दों का कारण बन सकता है।
जोहलार्डी

2
यह है , bombया bomयह हो सकता है unset? संपादित करें : हाँ, आप इसे हटा सकते हैं set nobomb
आइकेडवाटर

6
हाँ, VIm ने हमें bomb(ab के साथ) सेट किया ।
रफिन

डॉक्स के अनुसार, :set bombअगर चालू है :set fenc=utf-8.. देखें:he bomb
इवान कैरोल

12
अब हमारे सभी बेस एन्कोडिंग UTF-8 से संबंधित हैं
लूटे गए

6

फ़ाइल को पढ़ने से पहले कमांड लाइन पर एन्कोडिंग को बदलना उपयोगी हो सकता है:

rem On MicroSoft Windows
vim --cmd "set encoding=utf-8" file.ext
# In *nix shell
vim --cmd 'set encoding=utf-8' file.ext

देखें शुरू करने , --cmd


3
पहली भिन्नता भी * निक्स के गोले पर काम करना चाहिए। 'single quotes'केवल सभी मेटा पात्रों से बचने के लिए आवश्यक हैं, जो आमतौर पर वह नहीं है जो आप चाहते हैं।
jpaugh
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.