सवाल मैं वर्तमान बफर के एन्कोडिंग को विम में कैसे ढूंढूं?


मान लें कि मैं कुछ फ़ाइल को vim (या gvim) के साथ संपादित कर रहा हूं। मुझे फ़ाइल के एन्कोडिंग के बारे में कोई जानकारी नहीं है और मैं जानना चाहता हूं कि यह यूटीएफ -8 या आईएसओ -885 9 -1 या जो कुछ भी है? क्या मैं किसी भी तरह से मुझे यह दिखाने के लिए विम बता सकता हूं कि एन्कोडिंग का उपयोग किस प्रकार किया जाता है?


81
2017-08-24 13:48


मूल




जवाब:


फ़ाइलकोडिंग सेटिंग वर्तमान बफर के एन्कोडिंग को दिखाती है:

:set fileencoding
fileencoding=utf8

सादे टेक्स्ट फ़ाइल के एन्कोडिंग को निर्धारित करने के लिए वास्तव में कोई आम तरीका नहीं है, क्योंकि वह जानकारी फ़ाइल में ही सहेजी नहीं जाती है - यूटीएफ -8 फाइलों को छोड़कर जहां आपको एक तथाकथित बीओएम मिला है जो एन्कोडिंग को इंगित करता है। यही कारण है कि एक्सएमएल और एचटीएमएल फाइलों में अक्षरसेट मेटाटैग है।

आप 'एन्कोडिंग' सेटिंग के साथ एक विशेष एन्कोडिंग को लागू कर सकते हैं। देख :help encoding तथा :help fileencoding विम में संपादक कैसे इन सेटिंग्स को संभालता है। आप सूचीबद्ध किए गए लोगों के आधार पर विम को खोजने का प्रयास करने के लिए अपने vimrc में कई फ़ाइलकोडिंग सेटिंग्स भी जोड़ सकते हैं।


92
2017-08-24 13:52



उत्तम। भले ही कुछ हद तक काउंटर सहज हो। धन्यवाद! - innaM
दुर्भाग्य से, सही नहीं है। विम के लिए नहीं कर सकते हैं खोज आपके द्वारा पढ़ी जा रही फ़ाइल का एन्कोडिंग। यह फ़ाइल में लिखा नहीं है। यह केवल फ़ाइल में उपलब्ध पात्रों के आधार पर अनुमान लगा सकता है। उदाहरण के लिए "abcdef" टेक्स्ट वाली एक फ़ाइल कई एन्कोडिंग में हो सकती है, क्योंकि व्यावहारिक रूप से सभी उन पात्रों का समर्थन करते हैं, लेकिन "šđčćž" वाली फ़ाइल CP1252 में होगी। तो, आप कहीं से एन्कोडिंग नहीं पढ़ रहे हैं, लेकिन यह अनुमान लगाया जा रहा है कि एन्कोडिंग क्या हो सकती है, और उस पर आधारित यह ठीक से प्रदर्शित होता है। - Rook
आप यहां क्या कर रहे हैं स्पष्ट रूप से सेटिंग फ़ाइल की सामग्री के आपके अवलोकनों के आधार पर एन्कोडिंग। यदि आप एक फ़ाइल खोलते समय कई एन्कोडिंग करने की कोशिश करना चाहते हैं, तो उनमें से कई को अपने _vimrc में विकल्प में डाल दें। - Rook
@ldigas, फीडबैक के लिए धन्यवाद, मैंने जवाब को थोड़ा और स्पष्ट करने के लिए अद्यतन किया है (मुझे उम्मीद है!) - jtimberman
शायद उल्लेखनीय है कि बीओएम हैं 1.) यूटीएफ -8 के लिए अद्वितीय नहीं है - हालांकि यूटीएफ -8 अन्य बीओएम से अलग है, 2.) यूटीएफ -8 में आवश्यक नहीं है और अक्सर नहीं मिलता है। - ruffin


ध्यान दें कि फाइल 'एन्कोडिंग है स्पष्ट रूप से नहीं कहा गया है एक फाइल में कहीं भी। इस प्रकार, वीआईएम और अन्य अनुप्रयोगों को एन्कोडिंग पर अनुमान लगाना चाहिए। ऐसा करने का वैधानिक तरीका है chardet आवेदन, जिसे वीआईएम के भीतर से चलाया जा सकता है:

:!chardet %

Jtimberman द्वारा प्रदान किया गया उत्तर आपको एन्कोडिंग दिखाता है वर्तमान बफर जो डिस्क पर फ़ाइल के समान एन्कोडिंग नहीं हो सकता है। इस प्रकार, आप उसे नोटिस करेंगे chardet कभी-कभी वीआईएम की तुलना में एक अलग एन्कोडिंग दिखाएगा, खासकर यदि आपके पास वीआईएम हमेशा एक विशिष्ट एन्कोडिंग (यानी यूटीएफ -8) का उपयोग करने के लिए कॉन्फ़िगर किया गया है।

के बारे में अच्छी बात है chardet यह है कि यह अपने अनुमान के लिए आत्मविश्वास स्कोर देता है, जबकि वीआईएम एन्कोडिंग अनुमान लगाने के बारे में गलत हो सकता है (और अक्सर) \ x7F (ASCII 127) से ऊपर के कई वर्ण नहीं हैं। उदाहरण के लिए, एक एकल जोड़ना א PHP कोड की एक लंबी फ़ाइल में बनाता है chardet लगता है कि फाइल है ISO-8859-2 0.72 के आत्मविश्वास के साथ, जबकि थोड़ा लंबा वाक्यांश जोड़ना שלום, עולם!‏ यूटीएफ -8 को 0.9 9 के आत्मविश्वास स्कोर के साथ देता है। दोनों मामलों में, set fileencoding? दिखाया है UTF-8 ऐसा नहीं है क्योंकि डिस्क पर फ़ाइल यूटीएफ -8 थी, लेकिन क्योंकि VIM को आंतरिक रूप से यूटीएफ -8 का उपयोग करने के लिए कॉन्फ़िगर किया गया है।


12
2017-12-26 06:59



मेरा सुझाव है कि आप ओएसई में चार्टेट की उपलब्धता के बारे में एक शब्द का जिक्र करते हैं। - Soundararajan
@ साउंडराराजन: शायद मैं उल्लेख करने वाला व्यक्ति नहीं हूं क्योंकि मैं केवल डेबियन और सेंटोस का उपयोग करता हूं। यदि आपके पास प्रासंगिक जानकारी है, तो आपको जवाब संपादित करने के लिए आमंत्रित किया जाता है। धन्यवाद! - dotancohen