आह येस। Isearch आपके द्वारा लिखी गई कुंजियों को पढ़ता है, उन्हें ऊपर देखता है isearch-mode-map
और वर्तमान बफ़र में इनवॉइस करता है ।
खोज , दिखावे के बावजूद, मिनीबफ़र का उपयोग नहीं करता है । यह इको क्षेत्र का उपयोग करता है। यही है, जो आप देखते हैं वह वास्तव में आउटपुट संदेश है, जिसमें आपके द्वारा टाइप किए गए पात्रों की गूँज शामिल है।
यह वही करना चाहिए जो आप पूछते हैं:
(defun mydelete ()
"Delete the failed portion of the search string, or the last char if successful."
(interactive)
(with-isearch-suspended
(setq isearch-new-string
(substring
isearch-string 0 (or (isearch-fail-pos) (1- (length isearch-string))))
isearch-new-message
(mapconcat 'isearch-text-char-description isearch-new-string ""))))
(define-key isearch-mode-map (kbd "DEL") 'mydelete)
(BTW, आपका सवाल delete
चरित्र कहता है , लेकिन आपने लिखा है DEL
, जो बैकस्पेस वर्ण है।)
जैसा कि @Malabarba एक टिप्पणी में बताता है, जब आप नए खोज स्ट्रिंग को ""
(खाली स्ट्रिंग) पर सेट करते हैं , with-isearch-suspended
तो अंतिम खोज स्ट्रिंग के लिए खोज करके फिर से शुरू होता है, बजाय एक खाली खोज स्ट्रिंग के साथ शुरू करने के।
यह सामान्य रूप से " सुविधा " है with-isearch-suspended
। लेकिन क्योंकि आप कभी-कभी इस खोज को नियंत्रित करने के लिए, isearch + .el के चर with-isearch-suspended
में संस्करण के लिए खोज स्ट्रिंग को फिर से शुरू करने के लिए खाली करना चाह सकते हैं । यदि आप इसे बांधते हैं और आप फिर से खोज करते हैं तो खाली खोज स्ट्रिंग के साथ फिर से शुरू करें।isearchp-if-empty-prefer-resuming-with-last
nil
isearch-new-string
""
तो Isearch + के साथ आप वही कर सकते हैं जो आप इस परिभाषा के साथ चाहते हैं:
(defun mydelete ()
"Delete the failed portion of the search string, or the last char if successful."
(interactive)
(let ((isearchp-if-empty-prefer-resuming-with-last nil))
(with-isearch-suspended
(setq isearch-new-string
(substring
isearch-string 0 (or (isearch-fail-pos) (1- (length isearch-string))))
isearch-new-message
(mapconcat 'isearch-text-char-description isearch-new-string "")))))
मैं भी अब कि Emacs 24.4 प्रतिगमन, जो मैं मामला दर्ज किया है शुरू की नोटिस Emacs बग # 20466 के लिए, जिसका अर्थ है कि बंधन DEL
में isearch-mode-map
पर्याप्त नहीं है। उन्होंने <backspace>
इसके लिए एक के अलावा एक अलग बंधन जोड़ा DEL
। इसका मतलब यह है कि <backspace>
अब खोज के DEL
लिए ( अनुवाद नहीं किया जाता है , लेकिन आम तौर पर Emacs के लिए इसका अनुवाद अभी भी मिलता है)।
तो अगर आप बैकस्पेस कुंजी क्या आप Emacs 24.4 में पूछा या बाद में तो तुम सिर्फ बाध्य नहीं कर सकते हैं क्या करना चाहते DEL
करने के लिए mydelete
। आपको बांधने की जरूरत <backspace>
है mydelete
। गूंगा, AFAICT, n'arrete pas le progres पर माईस ...
मैं करने के लिए एक समान आदेश जोड़ दिया है iSearch + और यह करने के लिए बाध्य C-M-l
(समान में एक पूरा होने के बेमेल निकालने के लिए किया कुंजी Icicles )।
इस बात से भी अवगत रहें कि खोज C-g
में भी, जब कोई मिसमैच होगा, बेमेल टेक्स्ट को हटा दें। (लेकिन C-g
खोज सफल होने पर प्रभाव भी पड़ता है।)
मुझे इस बात का उल्लेख करना चाहिए था कि इस्क्रा + में भी कुछ समय के लिए इसी तरह की लाइनों के साथ एक वैकल्पिक व्यवहार रहा है। M-k
3 व्यवहारों के बीच इस्केल टॉगल के दौरान, जिसे विकल्प के मूल्य द्वारा नियंत्रित किया जाता है isearchp-drop-mismatch
:
replace-last
- आपका वर्तमान इनपुट अंतिम बेमेल पाठ को बदल देता है। आप हमेशा अपना अंतिम इनपुट देख सकते हैं, भले ही वह बेमेल हो। और यह प्रयोग करके संपादन के लिए उपलब्ध है M-e
।
nil
- आपका वर्तमान इनपुट संलग्न है, भले ही पिछले इनपुट में एक बेमेल हिस्सा हो।
कुछ और - यदि आपके वर्तमान इनपुट को अनदेखा किया जाता है (हटा दिया जाता है) तो यह एक बेमेल का कारण बनता है। खोज स्ट्रिंग में हमेशा सफल मैच होते हैं।