जब मैं द्वारा M-x query-replace
होने वाली सभी घटनाओं को प्रतिस्थापित करने के लिए करता हूं , तो यह भी मेल खाता है (अपरकेस )। Emacs को केवल लोअरकेस खोजने के लिए कैसे मजबूर किया जाए ?v
w
V
V
v
जब मैं द्वारा M-x query-replace
होने वाली सभी घटनाओं को प्रतिस्थापित करने के लिए करता हूं , तो यह भी मेल खाता है (अपरकेस )। Emacs को केवल लोअरकेस खोजने के लिए कैसे मजबूर किया जाए ?v
w
V
V
v
जवाबों:
(customize-set-variable case-fold-search nil)
या उस चर (विकल्प) को अपनी खुद की आज्ञा में बांधें जो अन्यथा केवल एक आवरण के आसपास है query-replace
। इसका यह फायदा है कि यह क्वेरी-रिप्लेसमेंट के बाहर, सामान्य उपयोग के लिए परिवर्तनीय मूल्य को नहीं बदलता है।
चर भी देखें case-replace
, जो प्रतिस्थापन पाठ के मामले को नियंत्रित करता है।
C-h f query-replace
उदाहरण के लिए, यह भी देखें कि यह कहां है:
यदि
case-fold-search
गैर-शून्य है और FROM-STRING में कोई अपरकेस अक्षर नहीं है तो मैचिंग स्वतंत्र है । प्रतिस्थापन पुराने पाठ के केस पैटर्न को नए पाठ में स्थानांतरित करता है, यदिcase-replace
औरcase-fold-search
गैर-शून्य हैं और FROM-STRING में कोई अपरकेस नहीं है
नीचे दिए गए टिप्पणियों को भी देखें, और Emacs Bug # 20687 , जहां दिखाते हैं कि आप किस तरह से perform-replace
मामले को मोड़ने के लिए पैच कर सकते हैं query-replace
।
ध्यान दें कि इस तरह से perform-replace
बांधने के लिए मौजूदा कोड case-fold-search
(चर जिस पर यह निर्भर करता है पर ध्यान दें):
(case-fold-search (if (and case-fold-search search-upper-case)
(isearch-no-upper-case-p from-string regexp-flag)
case-fold-search))
case-fold-search
करने के दौरान फ्लाई पर बदलना अच्छा होता । लेकिन दुर्भाग्य से इसका मोड मैप है। isearch
M-c
query-replace
query-replace-map
: (defun toggle-case () (interactive) (setq case-fold-search (not case-fold-search)))
और (define-key query-replace-map "C" 'toggle-case)
। लेकिन उस नक्शे में कुंजियों की हैंडलिंग कठिन-कूटबद्ध है perform-replace
। आप चाहते M-x report-emacs-bug
हैं कि perform-replace
कोड को अधिक ओपन-एंड होने के लिए प्राप्त किया जा सके, इसलिए कुंजी को मानचित्र में जोड़ा जा सकता है। इसमें कम से कम एक फ़ॉलबैक क्लॉज़ होना चाहिए जो कि कीम से बंधे हुए सीएमडी को आमंत्रित करता है।
query-replace-map
पहले क्यों नहीं मिला ।
perform-replace
एक अतिरिक्त cond
क्लॉज जोड़ने के लिए संशोधित करें जो आपके द्वारा परिभाषित कुंजी को लागू करता है query-replace-map
। कैच-ऑल t
क्लॉज से ठीक पहले नया क्लॉज लगाएं। यह नया क्लॉज है (def (call-interactively def))
:। सरल नहीं हो सकता।
(customize-set-variable case-fold-search nil)
त्रुटि देता है customize-set-variable: Attempt to set a constant symbol: nil
। इसके अलावा, मैंने दोनों की कोशिश की (setq case-fold-search nil)
और (setq case-replace nil)
क्वेरी अभी भी अपरकेस V से मेल खाती है