vim:在替换命令中使用搜索中的字符串

vim:在替换命令中使用搜索中的字符串

我经常使用 vim /search 命令来验证我的正则表达式(只是为了看看它匹配什么)。之后,我通常使用:%s替换命令,其中我使用搜索中的正则表达式作为要替换的字符串,例如我首先查找这样的字符串:

/TP-\(\d\{5\}\)-DD-\d\{3\}

它完全符合我想要的,所以我进行替换:

:%s/TP-\(\d\{5\}\)-DD-\d\{3\}/\1/g

但我必须在这里再次编写整个正则表达式。通常该正则表达式要长得多,这就是我寻找解决方案的原因:

是否有任何现有的快捷方式或 vim 脚本可以将该搜索模式直接粘贴到替换命令中?

我在终端中使用 vim(没有 gvim)。

答案1

一般来说,空的正则表达式意味着使用之前输入的正则表达式,所以:%s//\1/g应该做你想做的事情。

答案2

查看过去的正则表达式搜索以及 Ex 命令并对其进行更改的另一个好方法是在正常模式下编辑这些命令。在此模式下,您将拥有所有 vim 功能,包括复制和粘贴。

  • 搜索:而不是?/用于搜索,尝试q/q?
  • 对于 Ex 命令,而不是:尝试q:
  • 要退出此模式,请使用CtrlC

要阅读更多内容,请参阅:help q:

相关内容