Emacs में पूरे बफ़र के लिए स्ट्रिंग को कैसे खोजना / बदलना है?


9

पहले बफर शीर्ष पर वापस जाना और फिर खोज / क्वेरी करना वास्तव में असुविधाजनक है। खैर, खोज के लिए, यह अपेक्षाकृत सरल है कि आप बस C-sएक बार और चारों ओर लपेटने के लिए दबा सकते हैं , लेकिन क्वेरी / प्रतिस्थापन के लिए, यह थकाऊ है।

किसी भी सरल हैक करने के लिए दोनों ऑपरेशन के लिए बफर शीर्ष पर वापस जाने के बिना?

जवाबों:


6

हुह, ऐसा लगता है कि आप यहाँ से नहीं जा सकते ( मेरा जोर देकर):

'बार' के बाद 'फू' के हर उदाहरण को 'बार' से बदलने के लिए, दो तर्कों के साथ कमांड एमएक्स रिप्लेसमेंट-स्ट्रिंग का उपयोग करें fooऔर barप्रतिस्थापन केवल बिंदु के बाद होता है, इसलिए यदि आप पूरे बफ़र को कवर करना चाहते हैं, तो आपको पहले शुरुआत में जाना चाहिए

व्यक्तिगत रूप से, मैं बफर को दो में विभाजित करता हूं ( C-x 2), शीर्ष पर जाएं ( C-Home) और फिर बदलें कमांड चलाएं, अपने मूल फलक पर वापस जाएं ( C-x o) और फिर दूसरे को मारें ( C-x 0)। पता नहीं अगर वहाँ एक चाल है कि सरल बनाने के लिए।


4
(defun my-replace-string ()
  (interactive)
  (save-excursion
    (beginning-of-buffer)
    (call-interactively 'replace-string)))

अच्छी तरह से काम करता है, लेकिन क्षेत्र / चयन (हमेशा पूरे बफ़र पर करता है) पर क्वेरी-प्रतिस्थापित तक शिकंजा।
एलेक्स


0

मैं 24+ Emacs के साथ काम के लिए नीचे उपयोग कर रहा हूं:

;; query replace all from buffer start
(fset 'my-query-replace-all 'query-replace)
(advice-add 'my-query-replace-all
            :around
            #'(lambda(oldfun &rest args)
               "Query replace the whole buffer."
               ;; set start pos
               (unless (nth 3 args)
                 (setf (nth 3 args)
                       (if (region-active-p)
                           (region-beginning)
                         (point-min))))
               (unless (nth 4 args)
                 (setf (nth 4 args)
                       (if (region-active-p)
                           (region-end)
                         (point-max))))
               (apply oldfun args)))
(global-set-key "\C-cr" 'my-query-replace-all)

क्षेत्र के मामले की जगह, और कोई भी START और END args पास हुआ।

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