![vim:在替换命令中使用搜索中的字符串](https://linux22.com/image/16382/vim%EF%BC%9A%E5%9C%A8%E6%9B%BF%E6%8D%A2%E5%91%BD%E4%BB%A4%E4%B8%AD%E4%BD%BF%E7%94%A8%E6%90%9C%E7%B4%A2%E4%B8%AD%E7%9A%84%E5%AD%97%E7%AC%A6%E4%B8%B2.png)
我经常使用 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:
。