स्रोत कोड फ़ाइलों में कई लाइनों में `^ M`। मै उन्हे कैसे हटा सकता हूँ?


1

किसी ने हाल ही में मुझे कुछ .cppस्रोत कोड फाइलें भेजी हैं । जीएनयू एमएसीएस या जीवीआईएम के साथ फाइलें खोलने पर, मैंने उन्हें ^Mहर पंक्ति के अंत के पास एक अजीब चरित्र पाया ।

यहाँ एक स्क्रीनशॉट दिखाया गया है जिसका मेरा मतलब हैसंपादक स्क्रीनशॉट

जब मैं Gedit के साथ इन समान फ़ाइलों को खोलता हूं, तो मुझे ये ^Mवर्ण दिखाई नहीं देते हैं । मुझे क्या करना चाहिए? यहां कई फाइलें हैं, इसलिए खाली स्ट्रिंग को बदलकर खोज-खोज ऑपरेशन को खोलना और करना एक बैक-ब्रेकिंग ऑपरेशन की तरह लगता है।

जब मैं जीसीसी के साथ संकलित करता हूं, तो ये फाइलें काफी सफाई से संकलित करती हैं। यहाँ क्या हो रहा है। मुझे क्या करना चाहिए?


यदि आप इस व्यक्ति के साथ लगातार सहयोग करेंगे तो आपको लगभग निश्चित रूप से कुछ नहीं करना चाहिए। वे किसी भी नुकसान का कारण नहीं बनते हैं, और यदि आप किसी भी संशोधित फ़ाइलों को वापस भेजते हैं, तो आप उसके लिए समस्या पैदा कर सकते हैं, जब वह फ़ाइल का उपयोग करने की कोशिश करता है।
Zoredache

जवाबों:


6

यूनिक्स में, नई लाइन चरित्र है \nऔर जबकि विंडोज में है \r\n\rया ^Mगाड़ी-वापसी चरित्र है।

यदि फ़ाइल को विंडोज़ मोड में एक संपादक में लिखा जाता है, तो प्रत्येक नई लाइन चरित्र में एक गाड़ी वापसी चरित्र होगा। यदि आप अपने संपादक को (और यदि यह समझ में आता है) नई पंक्ति के पात्रों को खिड़कियों के समान मानते हैं, तो आप ^Mपात्रों को और अधिक नहीं देखेंगे ।

वैकल्पिक रूप से, आप dos2unixइस समस्या को ठीक करने के लिए अपने कोडबेस पर चल सकते हैं ।

और जैसा कि आपने सही तरीके से देखा है, आपको संकलन में कोई समस्या नहीं दिखेगी, क्योंकि यह कोड में कोई अतिरिक्त विशेष चरित्र नहीं है, बल्कि विंडोज़ और लिनक्स में न्यूलाइन वर्ण की व्याख्या के बीच एक बेमेल है।


इसे करने के और तरीके: sed.sourceforge.net/sed1line.txt के तहत एक फाइल को DOS से UNIX में कन्वर्ट करें और इसके विपरीत
lupincho

1

आपके पास मिश्रित विंडोज और यूनिक्स लाइन एंडिंग के साथ एक स्रोत फ़ाइल है। जबकि UNIX ने केवल लाइनफ़ीड (कभी-कभी ^ J के रूप में दिखाया गया) का उपयोग किया, Windows गाड़ी-वापसी + लाइनफ़ीड (कभी-कभी ^ M ^ J के रूप में दिखाया गया है) का उपयोग करता है। आपका संपादक UNIX लाइनें देखता है और कहता है "यह एक UNIX फ़ाइल होनी चाहिए" लेकिन फिर बिखरी हुई विंडोज लाइन को देखता है और कहता है "यह एक विशेष चरित्र है, मुझे इसे दिखाना होगा"।

आप फ़ाइल को एक या दूसरे तरीके से परिवर्तित करने का प्रयास कर सकते हैं। आप dos2unixUNIX लाइन एंडिंग में बदलने के लिए कमांड का उपयोग करने का प्रयास कर सकते हैं। यह UNIX पक्ष पर काम करेगा, लेकिन जब तक आपको एक Windows संपादक नहीं मिल जाता है, जब तक कि UNIX अंत ज्ञात नहीं हो जाता, तब तक आपका Windows पक्ष भ्रमित रहेगा।

या आप उपयोग कर सकते हैं unix2dosऔर इसे सभी विंडोज बना सकते हैं । यदि आप पूरी फ़ाइल के अनुरूप हैं, तो आपके UNIX संपादक (जो Windows संपादकों से बेहतर जानते हैं कि Windows संपादकों को UNIX अंत पता है) ठीक होना चाहिए। इस विशेष समय emacs / gvim सिर्फ इसलिए उलझा हुआ था क्योंकि फ़ाइल असंगत थी।

जैसा कि आपने देखा है, संकलक को परवाह नहीं है कि रेखा समाप्त क्या है।


1

स्रोत अंतर्दृष्टि -> विकल्प -> प्राथमिकताएं -> "फाइलें" टैब -> डिफ़ॉल्ट फाइल प्रारूप मेनू में "यूनिक्स (एलएफ)" बनाएं।


0

इस संसाधन के अनुसार , ^Mएक गाड़ी वापसी है - यही कारण है कि आप जीसीसी के साथ सफाई से संकलित कर सकते हैं।


0

इनको emacs / vim में देखने का कारण यह है कि वे चीजों को कैसे पढ़ते हैं / चीजों को कैसे एनकोड किया जाता है। ^Mवास्तव में सिर्फ एक है Carriage Return(प्रवेश बटन दबा कर)।

वैसे भी, आप ऐसा करने की कोशिश कर सकते हैं (क्योंकि, मैं Emacs में उपयुक्त कमांड नहीं जानता) :set ff=unix, और फिर :w, जिसे इसे यूनिक्स प्रारूप में बदलना चाहिए और अगली बार जब आप इसे खोलेंगे (iirc)।

या, यदि आप ^Mदस्तावेज़ से स्पष्ट रूप से हटाना चाहते हैं , तो एक खोज / बदलें (विम में, क्योंकि मुझे केवल इतना ही पता है) के साथ :%s/<ctrl + v><ctrl + m>//gc

( यह लिंक आपको Emacs में रिटर्न के लिए S / R करने के तरीके के बारे में कमांड दिखाता है।)

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.