2009-07-23 10 views
31

मैं टेक्स्ट फ़ाइल से कुछ विशेष वर्णों को मैन्युअल रूप से हटाने के लिए हेक्सल मोड का उपयोग करने की कोशिश कर रहा हूं और हेक्सल मोड में कुछ भी हटाने का तरीका नहीं देखता हूं।emacs में, सीआर (^ एम) को कैसे पट्टी करें और एलएफ (^ जे) अक्षर छोड़ दें?

मैं वास्तव में क्या चाहता हूं कैरिज रिटर्न को हटाने और लाइनफेड पात्रों को रखना है। हेक्सल मोड ऐसा करने का सही तरीका है?

+0

यदि यह एक पाठ फ़ाइल है ... क्यों उपयोग hexl मोड फ़ाइल एन्कोडिंग सेट कर सकते हैं? –

+0

मैं एक कैरिज रिटर्न हटाने और लाइन फीड छोड़ने की कोशिश कर रहा हूं ... पूछो नहीं - प्रोग्राम जो इस कॉन्फ़िगरेशन फ़ाइल को पढ़ रहा है उसे इस तरह से चाहता है। –

+1

+1 मुझे एक समान समस्या थी। कुछ अजीब कारणों से, मेरी कुछ टेक्स्ट फ़ाइलों की शुरुआत में हेक्स वर्णों का एक गुच्छा तैयार किया गया था। मैं बस उन पात्रों को हटाना चाहता हूं, लेकिन उन्हें नियमित बफर मोड में नहीं देख सकता। हेक्सल-मोड के लिए "डिलीट" सुविधा इतनी मुश्किल क्यों है? यह वहां होना चाहिए। – User1

उत्तर

10

इसके लिए हेक्सल-मोड की आवश्यकता नहीं है।^जे^एम के साथ^जे वर्क्स फॉर मी की ग्लोबल-सर्च-एंड-प्रतिस्थापन करें। :) फिर फ़ाइल को सहेजें, बफर को मारें, और फ़ाइल पर फिर से जाएं ताकि विंडो नई फ़ाइल मोड (यूनिक्स बनाम डॉस) दिखाती है।

+0

यह हमेशा मेरे लिए काम करता है। – Cheeso

+2

ऐसा करने के लिए भी परेशान क्यों? क्या करें keyersoze सुझाव देता है और dos2unix और/या unix2dos का उपयोग करें। –

+0

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

3

(हेक्सल मोड में) मुझे यकीन नहीं है कि आप वर्ण हटा सकते हैं। मैंने उन्हें हमेशा रिक्त स्थान या किसी अन्य चरित्र में परिवर्तित कर दिया है, नियमित पाठ संपादक पर स्विच किया है, और उन्हें वहां हटा दिया है।

+0

ग्रेट वर्कअराउंड, धन्यवाद! – Anne

5

यदि आप कैरिज रिटर्न को हटा देना चाहते हैं (आमतौर पर ^M के रूप में प्रदर्शित) और लाइन फ़ीड छोड़ दें। तुम बस w किसी भी रूपांतरण बाहर/फ़ाइल पर जा सकते हैं:

M-x find-file-literally /path/to/file 

क्योंकि कैरिएज रिटर्न के साथ एक फ़ाइल आम तौर पर डॉस मोड में प्रदर्शित किया जाता है (कैरिएज रिटर्न छुपा)। मोड लाइन बाईं ओर (DOS) प्रदर्शित करेगी।

एक बार ऐसा करने के बाद, ^M दिखाई देगा और आप उन्हें किसी भी चरित्र के रूप में हटा सकते हैं।

28

ओह। वह^जे^एम को दो शाब्दिक पात्रों के रूप में दर्ज करने की आवश्यकता है। c-qc-j, c-qc-m और प्रतिस्थापन स्ट्रिंग के लिए, c-qc-j का उपयोग करें।

+0

मुझे विश्वास नहीं है कि इसमें कितने वोट हैं! यह पूरी तरह से नौसिखिया (या भूलभुलैया) Emacs उपयोगकर्ता को बचाएगा! –

+1

हां, यह अधिक होना चाहिए। इसके अलावा, आप बस^एम को प्रतिस्थापित कर सकते हैं और^जे को अनदेखा कर सकते हैं। – ahonnecke

9

unix2dos/dos2unix नामक एक कमांड लाइन उपकरण भी है जो विशेष रूप से लाइन समाप्ति को परिवर्तित करने के लिए मौजूद है।

4

आपको हेक्सल-मोड का उपयोग करने की आवश्यकता नहीं है। इसके बजाए:

  • खुली फ़ाइल इस तरह से है जो आपको उन^एम के दिखाती है। उपरोक्त एम-एक्स खोज-फ़ाइल-शाब्दिक/पथ/से/फ़ाइल देखें। XEmacs में आप सी-यू सी-एक्स सी-एफ भी कर सकते हैं और बाइनरी एन्कोडिंग का चयन कर सकते हैं।
  • स्ट्रिंग आप बदलना चाहते हैं और यह मेगावाट
  • का उपयोग कर एम% कर (क्वेरी की जगह) कॉपी और पेस्ट क्या आप का उपयोग करने के संकेत दिए जाने पर Cy
  • वर्तमान दर्ज करें क्या यह
  • संभव के साथ बदलें कॉपी करना चाहते हैं का चयन करें दबाएँ ! अब सभी घटनाओं को प्रतिस्थापित करने के लिए

बिंदु यह है कि यदि आप जो भी बदलना चाहते हैं उसे दर्ज करने के लिए नहीं करते हैं, तो भी आप इसे हमेशा चुन सकते हैं/कॉपी कर सकते हैं।

+0

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

8

मान लें कि आप एक डीओएस एन्कोडेड फ़ाइल को यूनिक्स एन्कोडिंग में बदलना चाहते हैं, कोडिंग सिस्टम को "यूनिक्स" पर सेट करने और फ़ाइल को सहेजने के लिए एम-एक्स सेट-बफर-फ़ाइल-कोडिंग-सिस्टम (सी-एक्स आरईटी एफ) का उपयोग करें।

1
http://www.xsteve.at/prg/emacs/xsteve-functions.el से

:

;02.02.2000 
(defun xsteve-remove-control-M() 
    "Remove ^M at end of line in the whole buffer." 
    (interactive) 
    (save-match-data 
    (save-excursion 
     (let ((remove-count 0)) 
     (goto-char (point-min)) 
     (while (re-search-forward (concat (char-to-string 13) "$") (point-max) t) 
      (setq remove-count (+ remove-count 1)) 
      (replace-match "" nil nil)) 
     (message (format "%d ^M removed from buffer." remove-count)))))) 

अपने .emacs को यह जोड़ें और M-x xsteve-remove-control-M के माध्यम से इसे चलाने के लिए या एक आसान कुंजी करने के लिए यह बाँध। यह किसी भी मेमो में ^M एस को पट्टी कर देगा।

+1

यह एक अच्छा समाधान है। पूरी फ़ाइल को तुरंत ठीक करने के लिए एक आदेश। – DOKKA

80

प्रतिस्थापित करने की कोई आवश्यकता नहीं है। महज प्रयोग करें।

M-x delete-trailing-whitespace 

तुम भी के माध्यम से

C-x RET f unix 
+0

फ़ाइल एन्कोडिंग सेट करने से मेरी समस्या हल हो गई! – Ajoy