2009-04-28 11 views
74

मैं विंडोज पर जीवीआईएम का उपयोग कर रहा हूं। मेरा कोड लाइनों के अंत में ^M वर्ण दिखाता है। मैंने :set ff=dos का कोई फायदा नहीं हुआ। ^M वर्ण मौजूदा लाइनों के लिए बने रहते हैं, लेकिन मेरे द्वारा दर्ज की जाने वाली नईलाइनों के लिए दिखाई नहीं देते हैं। मैंने मैक में मोड स्विच किए हैं (^J वर्ण दिखाता है) और यूनिक्स (^M वर्ण भी दिखाता है) और वापस डॉस पर। क्या किसी और ने इसे देखा है?जीवीआईएम कैरिज रिटर्न (^ एम) दिखा रहा है, भले ही फ़ाइल मोड स्पष्ट रूप से डॉस

+0

देखें पर प्रभाव चाहते http://vim.wikia.com/wiki Vim/gvim में लाइन एंडिंग के व्यापक स्पष्टीकरण के लिए/file_format। यह लिंक यह भी बताता है कि समस्या को कैसे ठीक किया जाए। – axiopisty

उत्तर

133

ऐसा तब होता है जब आपके पास विंडोज लाइन एंडिंग और यूनिक्स वाले का मिश्रण होता है। यदि आपके पास 100 लाइनें हैं, 99 \ r \ n हैं और एक \ n है, तो आप 99^एम वर्ण देखेंगे। फिक्स उस रेखा को ढूंढना और इसे बदलना है। या फ़ाइल पर dos2unix चलाएँ। आप के साथ विंडोज लाइन अंत की जगह ले सकता:

:%s/\r\(\n\)/\1/g

+0

मैंने पाया कि यह लिखने से ठीक पहले एक पंक्ति। :) धन्यवाद! – Jerph

+1

हे, ठेठ। विम महान है, तो इसके साथ छड़ी! :-) – richq

+2

मेरी इच्छा है कि मैं आपको – espais

19

मैं आमतौर पर मेरी लाइन अंत सफाई के लिए निम्न का उपयोग करें:

:g/^M$/s/// 

Ctrl-M मैं आमतौर पर टाइप ctrl-क्यू पाने के लिए, तो ctrl-m और यह इसे अंदर रखता है। (कुछ वातावरण में यह ctrl-V हो सकता है तो ctrl-m।) मुझे नहीं पता क्यों, लेकिन मुझे लगता है कि rq की तुलना में यह याद रखना आसान है।

:set ff=dos भी मत भूलना, या आप अभी भी यूनिक्स लाइन के अंतराल के साथ बचत समाप्त कर देंगे।

+0

हाँ, मैं सामान्य रूप से Ctrl-Q के साथ^एम संस्करण का उपयोग करें और वह सब कुछ। लेकिन यह समझाने में मुश्किल है ;-) और समूह मिलान संस्करण प्रतिलिपि पेस्ट अनुकूल है। – richq

14

मैं यह पहले से ही उत्तर दिया गया है पता है, लेकिन एक चाल का उपयोग मैं

:%s/\r/\r/g 

यह विंडोज़ CRLF साथ यूनिक्स कैरिएज रिटर्न की जगह है। अगर किसी और के पास समस्या हो तो बस जोड़ा गया।

+0

यह बहुत अच्छा काम करता है !! – Gordon

4

वास्तव में क्या मेरे लिए काम किया (64-बिट खिड़कियों पर, जाँचने: 7.2) था:

:set ffs=dos 

न सिर्फ: एफएफ

4

विंडोज 7 पर विम 7.3 चल रहा है मैं निम्नलिखित इस्तेमाल किया कमांड:

:%s/^M/\r/g 

CTRL + Q में टाइप की गई एमआई बनाने के लिए CTRL + M।

40

तुम भी चला सकते हैं:

:e ++ff=dos 

^M निकालने के लिए: File format – Vim Tips Wiki देखें।

+1

धन्यवाद, यह मेरे लिए नया है – Jerph

+0

बहुत अच्छा काम करता है! – volting

+4

यह वही था जो मैं ढूंढ रहा था, और वास्तविक सही उत्तर है। धन्यवाद। –

2

यह शायद आप में से कई के लिए थोड़ा सा आसान है लेकिन ऑफ मौके पर यह उपयोगी है।

रिचक के उत्तर के आधार पर, मैंने पाया कि यह मेरे vimrc में उपयोगी है। नोट, दूसरे को आम तौर पर टिप्पणी की जाती है क्योंकि यह डीडी को थोड़ा उलझन में डाल देता है क्योंकि विम मैप किए गए पूर्व कमांड के बाहर काम करने के लिए एक और महत्वपूर्ण स्ट्रोक की प्रतीक्षा करेगा।

 
function! D2u() 
    execute '%s/\r\(\n\)/\1/g' 
endfunction 
"map d2u :%s/\r\(\n\)/\1/g 

पहले पूर्व में call D2u() और संपादन मोड में D2u दबाकर दूसरे टाइप करके चलाया जाता है।

6

आप इन वर्णों को अनदेखा कर सकते हैं!

पर ध्यान न दें अपने vimrc में डाल

मैच/\ r $/

+1

यह जानना अच्छा है कि यह वहां है, लेकिन क्या फ़ाइल में मेल खाने वाली लाइन समाप्ति को छोड़ने के लिए एक अच्छा उपयोग केस है? ऐसा लगता है कि यह परेशानी के लिए पूछ रहा है। – Jerph

+1

यह वही है जो मुझे चाहिए (फाइल को बदलना हमेशा सलाह नहीं देता है जब यह कुछ संशोधन नियंत्रण प्रणालियों में दिखाई देने वाली फ़ाइल में बड़े बदलावों का कारण बनता है) – RunHolt

+0

दुर्भाग्यवश, जैसे ही आप फ़ाइल को सहेजते हैं, यह पंक्ति अंत में बदल जाता है। इसलिए यह आपको बिना दिखाए, केवल व्हाइटस्पेस में इन अवांछित बड़े बदलावों का उत्पादन करता है। कम से कम मेरे लिए। :( –

2

ये मिश्रित यूनिक्स/डॉस सिस्टम पर एक फ़ाइल का उपयोग कर, क्योंकि एक के आम तौर पर अतिरिक्त सीआर लाइन अंत कर रहे हैं।

संभव प्रत्येक पंक्ति के अंत में, और क्या मैं का उपयोग से एक भी^एम दूर करने के लिए कम से कम जवाब है:

:%s/\r 

जो के बराबर है:

:%s/\r// 

लेकिन अंत स्लैश की आवश्यकता नहीं है (वे माना जाता है)।

0

के लिए बहुत कुछ करने की कोशिश की, लेकिन निम्नलिखित काम किया

:%s/\r/\r/g 

ध्यान दें: का उपयोग जी अगर आप पूरी फ़ाइल

संबंधित मुद्दे