如何在emacs的所有緩衝區中使用「M-x替換字符串」?如何在emacs的所有緩衝區中使用「M-x替換字符串」?
20
A
回答
19
的Mxibuffer
RET 噸ü
但你可能會想更重要的是嚴格一點,因爲如果它不能做的替代品將中止 - 例如遇到包含匹配文件名的只讀dired緩衝區。
章米內ibuffer閱讀模式的幫助,並學習如何輕鬆標記只是你感興趣的緩衝區
編輯:非正則表達式版本的ibuffer-do-replace-regexp
可以輕鬆通過修改原來的定義來編寫:
;; 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))
3
有一堆不同的選擇,它的種類取決於你想怎麼做。
查看Emacs Wiki的SearchBuffers。感興趣的將是moccur編輯和冰柱。
2
感謝Trey在這方面提到Icicles buffer searching。
我還要提及Dired中的Q(dired-do-query-replace
)。非常便利。而且要知道,你可以很容易地標記文件集在Dired使用鍵,如這些(和有更多):
- %M(
dired-mark-files-regexp
) - 標記的文件名匹配一個正則表達式 - %g(
dired-mark-files-containing-regexp
) - 標記其文本(內容)匹配正則表達式的文件 - *。(
dired-mark-extension
) - 標記文件的名字有相同的擴展名(例如,.el
)
請務必裝入標準庫dired-x.el
(也許dired-aux.el
)。
1
很久很久以前我在一個網站上發現了這個,抱歉我不記得來源。 如果找到只讀緩衝區,它將停止,所以要小心。
只是把這個在你的.emacs
(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)))))
相關問題
- 1. 替換全部緩衝區的字符串emacs
- 2. 如何用緩衝區中的字符串替換引號中的字符串?
- 3. 如何用yank緩衝區內容替換emacs中的區域?
- 4. 如何在emacs緩衝區中區分Python字符串和文檔字符串?
- 5. 所有emacs緩衝區中的行號
- 6. 如何在Python 3.1中將字符串轉換爲緩衝區?
- 7. 如何恢復emacs緩衝區列表中的緩衝區?
- 8. 讓emacs grep緩衝區使用特定的emacs緩衝區來顯示命中
- 9. 如何在Emacs中保存所有文件(或保存所有緩衝區)?
- 10. jquery如何替換所有字符串
- 11. 如何將字節[]數組轉換爲字符串緩衝區
- 12. 檢查當前的Emacs緩衝區是否包含字符串
- 13. 如何在emacs中的可見緩衝區之間切換?
- 14. 字符串緩衝區字符串轉換異常?
- 15. recvfrom的 - 如何緩衝區轉換爲字符串
- 16. 使用PHP替換字符串中的所有特殊字符
- 17. Emacs erlang緩衝區
- 18. Markdownize Emacs緩衝區
- 19. Emacs意外地將緩衝區切換到臨時緩衝區
- 20. 如何替換字符串中的所有字符?
- 21. 在emacs中使用python-mode切換緩衝區設置?
- 22. 將緩衝區的字符串表示形式轉換爲緩衝區
- 23. 使用CodeIgniter將圖像轉換爲緩衝區字符串
- 24. 在Emacs小緩衝區
- 25. 字符串連接vs字符串緩衝區在Javascript中
- 26. 在Emacs中如何切換到其他緩衝區?
- 27. 如何將base64字符串轉換爲輸入緩衝區?
- 28. 在JavaScript中,如何用單個字符替換字符串的所有字母?
- 29. Emacs在所有緩衝區中截斷行
- 30. 如何在Emacs Regexp中替換多個匹配的字符串?
謝謝,但這似乎並不能完全等同替換字符串。字面意義上,r就是「regexp-syntax」。 –
非常真實,它是一個正則表達式替換函數,並且沒有內置的字符串變體,因此您需要處理正則表達式,否則您可以定義類似的函數。我會添加一個答案。 – phils
此外,'M-x ibuffer RET t Q''將以相同的方式進行交互式操作,讓您有機會確認每個替換項。 –