是否有一个包(或自由浮动的elisp)围绕它动态预览匹配和Emacs中正则表达式搜索/替换的效果?我相信一些专门的模式提供这样的东西,但我还没有找到一个通用的解决方案。
我应该注意到我对regexp-builder非常熟悉,但它只预览匹配并要求我在缓冲区之间复制字符串 - 这不是一个完美的解决方案。
答案 0 :(得分:5)
visual-regexp允许预览内联替换:
答案 1 :(得分:4)
“预览匹配”的一种方法是通过isearch-forward-regexp
( CMs )输入正则表达式,在编写正则表达式时以交互方式突出显示匹配项,然后调用isearch-query-replace-regexp
CM - %(即正常query-replace-regexp
绑定)。
要查看整个缓冲区中的匹配项(而不仅仅是可见部分),可以在输入isearch regexp时键入 Ms o 以运行{{1} }。迷你缓冲区保持选中状态,因此您可以继续编辑正则表达式。
我不确定'预览'替换品。我怀疑大多数人只是做替换,如果是错误就再次撤消它? (而且我不确定它和预览功能之间有很大的不同。)
编辑: 我想 isearch-occur
缓冲区确实有助于排序的“替换预览”选项。它仅限于发生缓冲区,但也许这已经足够了。
Emacs 24在发生的缓冲区中有一个相当有用的occur
:类型 e ,您可以将匹配项编辑为文本(这样您就可以在该缓冲区中执行搜索和替换) 。编辑发生缓冲区后,键入 C-c C-c 将更改写回原始缓冲区;但直到你这样做,更改只存在于发生缓冲区本身,作为预测,如果你确认它们会发生什么。
按原样,这并不像你想要的那样顺利地结合这个答案的原始部分,但它似乎值得一提。
编辑2:哦,好吧,我以前的编辑是骗人的。或者至少对我写的东西不够远。我认为发生编辑模式没有立即对原始缓冲区进行更改,而有时这是真的,但大多数情况下它会在发生缓冲区的同时更新原始缓冲区。我不确定为什么它不一致,但显然你不能像我建议的那样把它当作预览。