[英]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.