Emacs में एक नईलाइन के साथ एक चरित्र को कैसे बदला जाए?


285

मैं एक चरित्र को बदलने की कोशिश कर रहा हूं - कहता हूं ;- replace-stringऔर replace-regexpEmacs में एक नई लाइन का उपयोग कर / या ।

मैंने निम्नलिखित आदेशों की कोशिश की है:

  • M-x replace-string RET ; RET \n

    यह स्थान ले लेगा ;2 पात्रों के साथ: \n

  • M-x replace-regex RET ; RET \n

    इसके परिणामस्वरूप निम्न त्रुटि होती है (मिनीबफ़र में दिखाया गया है):

    प्रतिस्थापन पाठ में `\ 'का अवैध उपयोग।

replace-stringइस कार्य के लिए उपयोग करने में क्या गलत है ? क्या इसका कोई और तरीका है?

धन्यवाद।

जवाबों:


427

M-x replace-string RET ; RET C-q C-j

  • C-qके लिए quoted-insert,

  • C-j एक नई रूपरेखा है।

चीयर्स!


3
Cq वास्तव में है quote-insertजो अगले चरित्र को उद्धृत करता है।
जो कैसडोंते

2
मेरा मानना ​​है कि यह "उद्धरण" के बजाय "उद्धरण" के रूप में "उद्धृत" है। कम से कम यही तरीका है कि यह संस्करण 22.1 पर है।
ब्रायन ओकले

8
C-jएक शाब्दिक 0x0aनियंत्रण कोड है, Retजो आपके उद्धरण और भेजता के बगल में कुंजी है 0x0den.wikipedia.org/wiki/C0_and_C1_control_codes
जोनाथन अर्केल

2
Vim उपयोगकर्ताओं के लिए ध्यान दें, का उपयोग कर C-jमें Emacs , जबकि C-mमें vim
अल्फा टैन

2
@JonathanArkell यह एक विवरण है कि यह कैसे काम करता है, लेकिन क्यों नहीं । संपादक के भीतर, Ret 0x0a का उत्पादन करता है, इसलिए इसे उद्धृत-सम्मिलित में 0x0d का उत्पादन क्यों करना चाहिए? इसका कोई मतलब नहीं है। (सिर्फ इसलिए कि आंतरिक कीबोर्ड कोड ऐतिहासिक कारणों के लिए 0x0d है? हम सभी जगह महत्वपूर्ण नक्शों का उपयोग करते हैं, यहां क्यों नहीं जहां यह सही समझ में आता है?)
vog

74

चार तरीके हैं जो मैंने मिनीबफ़र में एक नई लाइन डालने के लिए पाया है।

  1. C-o

  2. C-q C-j

  3. C-q 12 (12 न्यूलाइन का ऑक्टल मूल्य है)

  4. C-x oमुख्य विंडो के साथ C-k, एक नई लाइन C-x oको मारें, फिर मिनीबफ़र पर वापस जाएं, इसे साथ देंC-y


10
उल्लेख करने के लिए +1 C-o! की तुलना में एक कम महत्वपूर्ण स्ट्रोक C-q C-j। पहले उस का उपयोग करने के बारे में नहीं सोचा था।
itsjeyd

संस्करण 4 के लिए धन्यवाद! सह और Cq पलटाव है, तो मददगार।
जोकिम डब्ल्यू

बहुत बहुत धन्यवाद। क्या आप बता सकते हैं कि Co काम क्यों करता है और Cq Cj नहीं करता है?
क्रिश्चियन मैडसेन

C-oमिनीबफ़र में नई रेखा डालने के बाद बिंदु नहीं हिलता है, इसलिए आपको अभी भी सही तीर कुंजी को दबाने की आवश्यकता है यदि आप प्रतिस्थापन स्ट्रिंग में नई रेखा के बाद कुछ सम्मिलित करना चाहते हैं।
रोबिन ग्रीन

Emacs 25.2.2 के मेरे संस्करण में, C-oखोज का उपयोग करते समय मुख्य विंडो में एक नई C-q C-jपंक्ति में प्रवेश करेगा , जबकि मिनीबफ़र में नई पंक्ति में प्रवेश करेगा। C-oक्वेरी के साथ काम करता है - हालांकि बदलें।
टीसी प्रॉक्टर

25

मत भूलो कि आप हमेशा मिनीबार में काट और पेस्ट कर सकते हैं।

तो आप अपने बफर से सिर्फ एक नई पंक्ति (या किसी स्ट्रिंग) को कॉपी कर सकते हैं, फिर प्रतिस्थापन पाठ के लिए संकेत मिलने पर इसे छोड़ दें।


2
यह वास्तव में उन पात्रों के लिए एक अच्छा विचार है जो मुझे कुंजी बाँध नहीं जानते हैं।
ली 16

आह आह ! बहुत आसन !
जेरेमी पौएट

8

अधिक स्पष्ट रूप से:

सेमी कोलोन कैरेक्टर (?) को एक नई रेखा के साथ बदलने के लिए, इन सटीक चरणों का पालन करें।

  1. आप जिस टेक्स्ट को बदलना चाहते हैं उसके बफर के ऊपरी बाएँ कर्सर को खोजें
  2. टाइप करें mx रिप्ले-स्ट्रिंग और हिट RETURN
  3. मिनी-बफर कुछ इस तरह प्रदर्शित होगा: बदलें स्ट्रिंग (डिफ़ॉल्ट ^ ->):
  4. उस चरित्र में टाइप करें जिसे आप बदलना चाहते हैं। इस मामले में, ; और RETURN मारा
  5. मिनी-बफर कुछ इस तरह प्रदर्शित करेगा: स्ट्रिंग; साथ में:
  6. अब Cq Cj निष्पादित करें
  7. अर्ध-उपनिवेश के सभी उदाहरणों को एक नई पंक्ति से बदल दिया जाएगा (कर्सर स्थान से बफर के अंत तक अब दिखाई देगा)

मूल व्याख्या की तुलना में इसके लिए थोड़ा अधिक है।


2

टेक्स्ट-मोड पर स्विच करें

M-x text-mode

ब्लॉक को इंडेंट करने के लिए हाइलाइट करें

इंडेंट

C+M \

जो भी मोड में वापस स्विच ..


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