नई लाइनों की अनदेखी करने वाले स्ट्रिंग की खोज करें


11

मुझे उन फ़ाइलों को लिखने के लिए उपयोग किया जाता है जहां पैराग्राफ को कई लाइनों में विभाजित किया जाता है, जैसे कि fill-column। जब मैं एक स्ट्रिंग ( C-s) के लिए खोज करता हूं this is a long text, जैसे , खोज परिणाम उन स्थानों पर नहीं लौटेंगे जहां स्ट्रिंग दो शब्दों (जैसे this\nis a long text) के बीच एक पंक्ति विराम के साथ दिखाई देती है ।

क्या कोई आदेश है जो इन परिणामों को भी लौटाएगा?

जवाबों:


11

चर पर एक नजर डालें isearch-lax-whitespace, isearch-regexp-lax-whitespaceऔर search-whitespace-regexp

यदि पहले दो चर कुछ गैर-शून्य (जैसे t) पर सेट हैं , तो आपके खोज स्ट्रिंग में कोई भी स्थान वर्ण, search-whitespace-regexpचर द्वारा परिभाषित नियमित अभिव्यक्ति द्वारा मिलान किए गए किसी भी क्रम से मेल खाएगा ।

लाइन ब्रेक के दौरान शब्दों का मिलान करने के लिए ऐसा करें:

(setq isearch-lax-whitespace t)
(setq isearch-regexp-lax-whitespace t)
(setq search-whitespace-regexp "[ \t\r\n]+")

आपकी क्वेरी में एक स्थान वर्ण अब किसी भी स्थान, टैब, या किसी भी समय लाइनब्रेक से मेल खाएगा।


धन्यवाद, लेकिन यह मेरे लिए काम नहीं करता है। मेरा Emacs संस्करण 23.4.1 है। स्पष्ट रूप से इसमें "isearch-lax-whitespace" वैरिएबल नहीं है।
टोनी

1
हाँ, इन फीचर्स को Emacs 24.3 में पेश किया गया था। अधिक हाल के संस्करण में अपग्रेड करने का कोई मौका? संस्करण 23.4.1 पहले से ही तीन साल से अधिक पुराना है।
रेकाडो

2
कोशिश करो isearch-forward-word, जो M-s wहाल के Emacs में बंधा हुआ है।
राजनेता

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