2011-09-21 9 views

cevap

19

MxibufferRETtU

Ama muhtemelen bunu bir yedek yapamaz eğer iptal edecek çünkü, biraz daha bundan daha kısıtlayıcı olmak isteyeceksiniz - Örneğin eşleşen bir dosya adı içeren salt okunur bir yönlendirme arabelleği ile karşılaşır.

Ch modu yardımı okumak ve kolayca ilgilendiğiniz sadece tampon işaretlemek nasıl öğrenmek için ibuffer içindem

Düzenleme:. olmayan bir regexp sürümü ibuffer-do-replace-regexp kolayca orijinal tanımını değiştirerek yazılabilir:

farklı seçenek bir grup vardır
;; defines ibuffer-do-replace-string 
(define-ibuffer-op replace-string (from-str to-str) 
    "Perform a `replace-string' in marked buffers." 
    (:interactive 
    (let* ((from-str (read-from-minibuffer "Replace string: ")) 
      (to-str (read-from-minibuffer (concat "Replace " from-str 
               " with: ")))) 
    (list from-str to-str)) 
    :opstring "replaced in" 
    :complex t 
    :modifier-p :maybe) 
    (save-window-excursion 
    (switch-to-buffer buf) 
    (save-excursion 
     (goto-char (point-min)) 
     (let ((case-fold-search ibuffer-case-fold-search)) 
     (while (search-forward from-str nil t) 
      (replace-match to-str nil t)))) 
    t)) 
+0

Teşekkür Bu yerleştirmek, ancak bu yerine-string tamamen eşit görünmüyor. r-s regexp-sözdizimi olarak U gerçekten anlamıyla okur. –

+0

Çok doğru, bir regexp değiştirme işlevi ve yerleşik bir dize varyantı yoktur, bu nedenle ya regex'lerle ilgilenmeniz ya da benzer işlevi tanımlamanız gerekir. Cevaplara bir tane ekleyeceğim. – phils

+4

Ayrıca, 'M-x ibuffer RET t Q', etkileşimli olarak aynı şeyi yapacak ve her bir değiştirme işlemini onaylamanızı sağlayacaktır. –

3

, bu tür bunu yapmak istiyorum nasıl bağlıdır.

SearchBuffers için Emacs Wiki'ye bakın. Ilgisi moccur-edit ve icicles olurdu.

2

Bu bağlamda, Icicles buffer searching'dan bahsetmek için Trey'e teşekkürler. Dired'de ayrıca Q (dired-do-query-replace) da belirtmeme izin verin. Çok kullanışlı. Ve kolayca bu gibi tuşlarını kullanarak dired dosyaların setleri işaretleyebilirsiniz unutmayın (ve daha vardır):

  • % m (dired-mark-files-regexp) - adları regexpi maç işareti dosyaları
  • % g (dired-mark-files-containing-regexp) - metni (içerik) bir regexp ile eşleşen dosyaları işaretleme
  • *. (dired-mark-extension) - adları aynı uzantısına sahip işareti dosyaları (örneğin .el)

standart kütüphane dired-x.el (ve belki dired-aux.el) yüklemek için emin olun.

1

Bunu bir web sitesinde çok uzun zaman önce buldum, üzgünüm kaynağı hatırlamıyorum. Salt okunur bir arabellek bulursanız, duracaktır, bu yüzden dikkatli olun.

Sadece .emacs içinde

(defun query-replace-in-open-buffers (arg1 arg2) 
    "query-replace in open files" 
    (interactive "sQuery Replace in open Buffers: \nsquery with: ") 
    (mapcar 
    (lambda (x) 
    (find-file x) 
    (save-excursion 
     (beginning-of-buffer) 
     (query-replace arg1 arg2))) 
    (delq 
    nil 
    (mapcar 
    (lambda (x) 
     (buffer-file-name x)) 
    (buffer-list))))) 
İlgili konular