Başa dönmeden Emacs içindeki tüm arabellek dizesini nasıl arayabilirim / değiştirebilirim?


9

Öncelikle arabellek üstüne geri dönüp arama / sorguyu yapmak gerçekten elverişsizdir. Arama için, C-setrafa sarmak için bir kez daha basmanız nispeten basittir , ancak sorgulama / değiştirme için sıkıcıdır.

Her iki işlem için arabellek üstüne gitmeden bunu yapmak için basit bir kesmek?

Yanıtlar:


6

Hah, yapamayacağınız gibi görünüyor ( buradan alın , benimkini vurgulayın):

Noktadan sonraki her 'foo' örneğini 'bar' ile değiştirmek için, Mx replace-string komutunu ve iki bağımsız değişkeni fooile kullanın bar. Değiştirme sadece noktadan sonra gerçekleşir, bu nedenle tüm arabelleği kapsamak istiyorsanız önce başa gitmelisiniz .

Şahsen, arabelleği ikiye ( C-x 2) böldüm, üstüne ( C-Home) gidip replace komutunu çalıştırıyorum, orijinal bölüme ( ) geri dönüp C-x oikincisini ( C-x 0) öldürdüm . Bunu basitleştirmek için bir hile olup olmadığını bilmiyorum.


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

Güzel çalışıyor, ancak bölge / seçimde sorgu değiştirme yerine vidalar (her zaman tüm tamponda çalışır).
Alex


0

Emacs 24+ ile çalışmak için aşağıdakileri kullanıyorum:

;; 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)

Bölgenin yerine büyük / küçük harf değişimi ve tüm START ve END bağımsız değişkenleri iletildi.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.