2009-06-17 8 views
17

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

क्या फ़ाइल खोलते समय एन्कोडिंग के लिए vim जांच करने का कोई तरीका है, और इसे सही से खोलें?

सबसे अधिक "पोर्टेबल" वाले लोगों के रूप में आप किस एन्कोडिंग का उपयोग करते हैं (जिनके पास उपयोगकर्ताओं की सबसे बड़ी मात्रा में कम से कम समस्याएं होंगी)?

+0

जिस समस्या का सामना कर रहे हैं अंग्रेजी से कोई लेना देना एक बहुत नहीं है, क्योंकि अंग्रेजी में उपयोग किए जाने वाले बहुत से विराम चिह्न चिह्न एएससीआईआई से गायब हैं, जैसे कुछ अंग्रेजी बोलने वाले देशों सहित एम्डाश और कुछ मुद्रा प्रतीकों। एएससीआईआईआई में वास्तव में केवल यूएस-इंग्लिश दिमाग में था, जो वास्तव में 'मानक' नहीं है, जितना संयुक्त राज्य अमेरिका इसे नाटक करना पसंद करता है। ;-) –

उत्तर

20

विम को एन्कोडिंग का पता लगाने की आवश्यकता है, और यह समस्याग्रस्त होने जा रहा है, क्योंकि फाइलें अक्सर अपने एन्कोडिंग को स्पष्ट रूप से नहीं बताती हैं (एक स्पष्ट अपवाद हेडर में एन्कोडिंग विशेषता वाले एक्सएमएल फाइलें हैं)।

आप एक अलग एन्कोडिंग इस प्रकार के साथ एक फ़ाइल को फिर से लोड करने के लिए विम मजबूर कर सकते हैं:

:e ++enc=cp437 

और आप अपने .vimrc में डिफ़ॉल्ट एन्कोडिंग सेट यदि आप चाहें तो कर सकते हैं।

This page में अधिक जानकारी और लिंक हैं, विशेष रूप से wrt। यूनिकोड संपादन। यूटीएफ -8 सबसे व्यापक रूप से उपयोग किया जाने वाला एन्कोडिंग है, और डिफ़ॉल्ट आपको शायद इसके लिए जाना चाहिए।

+1

दुनिया भर में इतने चतुर लोगों को देखने के लिए बहुत अच्छा लगा।इस तरह के उपयोगी उत्तर के लिए धन्यवाद;) –

2

आप फ़ाइल के एन्कोडिंग को सेट करने के लिए एक विम मॉडलिन का उपयोग कर सकते हैं। फ़ाइल की पहली पांच पंक्तियों में यह केवल एक टिप्पणी है, जो vi: set fileencoding=cp437 से शुरू होती है।

आप 'vi: set' के बजाय 'vim:' से भी शुरू कर सकते हैं, लेकिन बाद वाले इसे अधिक संपादकों के साथ संगत बनाता है। आपको निश्चित रूप से इनमें से किसी भी उपसर्ग और 'फ़ाइलकोडिंग', या जो भी विकल्प आप सेट करना चाहते हैं, के बीच की जगह की आवश्यकता है। fileencoding विकल्प आपकी समस्या को हल करना चाहिए, यद्यपि।

तो, अजगर या एक आर सी फाइल में, तो आप इस अपनी फ़ाइल के शीर्ष पर डाल सकते हैं:

// vi: set fileencoding=cp437 
:

# vi: set fileencoding=cp437 

जावा, सी, सी ++, जावा स्क्रिप्ट, आदि में डाल

अधिक जानकारी के लिए, vim में, :help modeline टाइप करें।

+0

उपयोगकर्ता @SumnerHayes द्वारा सुझाए गए अनुसार यह दिखाया गया है कि मॉडलिन को फ़ाइल में पहली पांच पंक्तियों में से एक होना है। –

0

आप यूनिकोड का उपयोग करके अपनी फ़ाइलों को एन्कोड कर सकते हैं, और फ़ाइल में Byte Order Mark (बीओएम) सेट कर सकते हैं। यह विम को उचित तरीके से इलाज करेगा, लेकिन कुछ कंपाइलरों और कार्यक्रमों में इससे परेशानी हो सकती है। यहां तक ​​कि cat जैसे मूल खोल आदेश कुछ उपयोग मामलों के लिए गलत व्यवहार कर सकते हैं।

यह करने के लिए, vim में इस टाइप करें:

:set fileencoding=utf-8 
:set bomb 
:w 

अधिक जानकारी के लिए, टाइप करें:

:help bomb 
संबंधित मुद्दे