चयन (यानी, क्षेत्र के रूप में) वृद्धिशील खोज में वर्तमान मैच


9

जब C-sमैं एक स्ट्रिंग खोज रहा हूं, तो मैं खोज मोड से बाहर निकलने के लिए कुछ कुंजी हिट करने में सक्षम होना चाहता हूं, लेकिन फिर भी मैच का चयन बनाए रखना चाहिए। इस तरह मैं तुरंत टाइप करना शुरू कर सकता हूं और आखिरी मैच को बदल सकता हूं।

उदाहरण के लिए, कहें कि मेरे पास निम्नलिखित दस्तावेज हैं:

The quick brown fox jumps over the lazy dog.

अगर मैं "आलसी" खोजता हूं, तो emacs उस शब्द का चयन करेंगे, जैसे (वर्ग ब्रैकेट चयन हैं, पाइप कर्सर है):

The quick brown fox jumps over the [lazy|] dog.

अब, अगर मैं दबाता हूं, तो returnemacs मेरे कर्सर की स्थिति बनाए रखेंगे, लेकिन यह "आलसी" को रद्द कर देगा।

The quick brown fox jumps over the lazy| dog.

इसके बजाय, मैं एक शॉर्टकट चाहता हूं जो खोज मोड से बाहर निकलेगा लेकिन वर्तमान मैच चयन को बनाए रखेगा, जैसे कि ऊपर की दूसरी स्थिति में।


M-x query-replaceवह नहीं है जो आप खोज रहे हैं?
न्सुकामी _

1
@Nsukami_ मुझे हमेशा नहीं पता कि मैं क्या चाहता हूं कि मेरी क्वेरी हो या यहां तक ​​कि मैं जो भी खोजूं उससे पहले इसे बदल देना चाहता हूं। यह सिर्फ हिट करना आसान है C-sऔर जो मुझे लगता है कि मैं खोजना चाहता हूं उसे टाइप करें, फिर जिस चीज को मैं बदलना चाहता हूं उस पर क्वेरी w / बैकस्पेस को शून्य में बदल दें। फिर मैं उसके साथ खेलता हूं जो वास्तव में मैं इसे बदलना चाहता हूं। M-%बहुत "औपचारिक" है।
बेन

समाधान मेरे काम आता है, जैसे कि जब मैं इसे मारने के लिए किसी शब्द को खोजता हूं और फिर उसे एक अलग जगह पर जमा देता हूं। query-replaceयह हल नहीं करता है।
GergelyPolonkai

जवाबों:


7

यहाँ एक दृष्टिकोण है:

(defun isearch-exit-mark-match ()
  "Exit isearch and mark the current match."
  (interactive)
  (isearch-exit)
  (push-mark isearch-other-end)
  (activate-mark))

(define-key isearch-mode-map (kbd "<C-return>") #'isearch-exit-mark-match)

यह वर्तमान खोज से बाहर निकलने के लिए एक अलग कुंजी (सी-रिटर्न) को बांधता है और चयनित अंतिम मैच को भी छोड़ देता है। यह साथ isearch-forward-regexpही काम करेगा , जो आसान है।


1
मुझे "प्रतीक की फ़ंक्शन परिभाषा शून्य है: बाइंड-की।" कहां से bind-keyआ रहा है?
बेन

1
क्षमा करें, bind-keyदूसरे पुस्तकालय से आता है। मैंने define-keyइसके बजाय अंतर्निहित फ़ंक्शन का उपयोग करने के लिए उत्तर बदल दिया है ।
ग्‍लूकस

4

लाइब्रेरी Isearch + आपको आसानी से ऐसा करने देता है , और यहां तक ​​कि इसे मक्खी पर / बंद टॉगल करता है।

  • isearchp-set-region-flagजब आप खोज छोड़ते हैं तो गैर-शून्य विकल्प अंतिम खोज लक्ष्य के आसपास का क्षेत्र (चयन) स्वचालित रूप से सेट करता है।

  • आदेश isearchp-toggle-set-region, M-s M-SPCisearch के दौरान बाध्य विकल्प isearchp-set-region-flag

  • कमांड set-region-around-search-targetअंतिम खोज लक्ष्य के आसपास के क्षेत्र को मैन्युअल रूप से सेट करता है। (इसलिए यदि विकल्प सेट नहीं है, तो भी आपको स्वचालित चयन नहीं मिलता है, आप इसे मैन्युअल रूप से कर सकते हैं।)


लाइब्रेरी रिप्लेसमेंट + आपको उसी चीज़ के लिए काम करने देता है query-replaceइत्यादि। यह क्षेत्र को अंतिम प्रतिस्थापन की जगह (यानी, चयन) के आसपास रखता है। यह इसे isearchp-set-region-flagनियंत्रित करने के लिए एक ही विकल्प का उपयोग करता है , और कमांड set-region-around-search-targetका समान प्रभाव होता है।

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