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

kar*_*s7e 17 vim regular-expression

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

/TP-\(\d\{5\}\)-DD-\d\{3\}
Run Code Online (Sandbox Code Playgroud)

它与我想要的完全匹配,所以我进行了替换:

:%s/TP-\(\d\{5\}\)-DD-\d\{3\}/\1/g
Run Code Online (Sandbox Code Playgroud)

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

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

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

gee*_*aur 24

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

  • 另外,如果您想验证或修改上次使用的模式,您可以使用 [Control-r](http://vimhelp.appspot.com/cmdline.txt.html#c_CTRL-R) 然后使用 `/` 插入[搜索模式寄存器 (`/`)](http://vimhelp.appspot.com/change.txt.html#quote%2f) 的内容直接进入部分键入的命令行(例如,紧跟在 `:%s/ `)。 (10认同)