[英]Emacs interactive regex replacement
假設你有一些文字里面有這樣的文字:
"foo" ... "bar" ... "file" ... "emacs"
而你想要做的就是替換“with”。我知道只需要進行以下替換即可:
" -> ''
但是假設您想以交互方式和正則表達式進行,對於更復雜的情況,如何才能完成?
我更好地解釋自己:我希望我可以通過這種方式獲得一個命令或一系列命令:
"\\\\(.*?\\\\)"
這樣的正則表達式並以交互方式查看結果(即當您編輯正則表達式時,當前可見的匹配會突出顯示,並且在您進行更改時始終更新突出顯示)。 ' '\\1' '
終於我發現了!!!!! 以下是要遵循的步驟:
Mx isearch-forward-regexp
以交互方式插入正則表達式。 如果你犯了一個錯誤,你可以使用DEL或我並導航你的正則表達式來糾正它。
然后在找到你想要的東西之后立即按M-%並更換你喜歡的並開始更換。
因此,您可以以完全交互式和增量的方式搜索和替換正則表達式。
運行Mx isearch-forward-regexp
或CMs
。
當您開始鍵入正則表達式時,第一次出現將立即突出顯示。 嘗試使用光標返回正則表達式將取消搜索,因此如果您犯了錯誤,您應該使用Me
來允許編輯,進行更改,然后按Enter繼續搜索。
如果對正則表達式感到滿意,請按M-%
,鍵入替換字符串(或使用向上鍵訪問以前使用的替換字符串),然后按RET
開始交互式替換。
對於每次出現,按y
鍵替換一次,按n
跳過, !
替換所有, RET
退出,或?
看到更多的選擇。
要重復上一次正則表達式搜索,請輸入CMs
然后輸入Cs
。
完整的詳細信息在手冊頁中 。
命令query-replace-regexp
滿足您的要求? 在Emacs的大多數安裝中,它將被綁定到CM-%
。
由於這不滿足OP的要求,建議再看一下re-builder
。 Emacs手冊或幫助系統中沒有記錄此功能,它只是在Emacs Lisp手冊中記錄 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.