繁体   English   中英

Emacs交互式正则表达式替换

[英]Emacs interactive regex replacement

假设你有一些文字里面有这样的文字:

"foo" ... "bar" ... "file" ... "emacs"

而你想要做的就是替换“with”。我知道只需要进行以下替换即可:

" -> ''

但是假设您想以交互方式和正则表达式进行,对于更复杂的情况,如何才能完成?

我更好地解释自己:我希望我可以通过这种方式获得一个命令或一系列命令:

  • 写一个像"\\\\(.*?\\\\)"这样的正则表达式并以交互方式查看结果(即当您编辑正则表达式时,当前可见的匹配会突出显示,并且在您进行更改时始终更新突出显示)。
  • 对regexp感到满意后,请指定替换项,例如' '\\1' '
  • 交互式替换所有比赛

终于我发现了!!!!! 以下是要遵循的步骤:

  • Mx isearch-forward-regexp

  • 以交互方式插入正则表达式。 如果你犯了一个错误,你可以使用DEL或我并导航你的正则表达式来纠正它。

  • 然后在找到你想要的东西之后立即按M-%并更换你喜欢的并开始更换。

因此,您可以以完全交互式和增量的方式搜索和替换正则表达式。

  • 运行Mx isearch-forward-regexpCMs

  • 当您开始键入正则表达式时,第一次出现将立即突出显示。 尝试使用光标返回正则表达式将取消搜索,因此如果您犯了错误,您应该使用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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM