当文件来自非常不同的目录时,如何替换所有打开缓冲区中的文本?

时间:2014-02-27 15:36:47

标签: emacs

如何在emacs中的所有打开缓冲区中替换字符串? 我在互联网上找到了这个,但选项'Y'一次性更改所有缓冲区都不起作用,我需要用'!'更改一个缓冲区的时间选项。

;; Query Replace in open Buffers
(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)))))

2 个答案:

答案 0 :(得分:1)

简单,只需使用multi-occur-in-matching-buffers,然后按 e occur-edit-mode。然后我猜query-replace。用 C-c C-c 结束。并且不要忘记保存所有已更改的缓冲区。

答案 1 :(得分:0)

使用Icicles,在 Icicle 模式下使用C-u C-c '。搜索您选择的子集  开放缓冲区(或所有缓冲区)。

另见https://stackoverflow.com/a/7137348/729907