Search 在VIM中存储搜索字符串?

Search 在VIM中存储搜索字符串?,search,vim,Search,Vim,我有一个相当复杂的正则表达式字符串,用于查找IP地址(25[0-5]|2[0-4][0-9]|[0-1][0-9]{2}|[0-9]{1,2}等) 例如,如果我想获得IP地址的所有实例,我必须删除实例之前行中的所有内容,在第二次调用中,我必须删除实例之后的所有内容。有没有一种方法可以将搜索字符串存储为变量,以便在多个替换中使用 例如: Store the string in register "a" :y a 25[0-5]|2[0-4][0-9]|[0-1][0-9]{2}|[0-9]

我有一个相当复杂的正则表达式字符串,用于查找IP地址(25[0-5]|2[0-4][0-9]|[0-1][0-9]{2}|[0-9]{1,2}等) 例如,如果我想获得IP地址的所有实例,我必须删除实例之前行中的所有内容,在第二次调用中,我必须删除实例之后的所有内容。有没有一种方法可以将搜索字符串存储为变量,以便在多个替换中使用

例如:

    Store the string in register "a"
:y a 25[0-5]|2[0-4][0-9]|[0-1][0-9]{2}|[0-9]{1,2}\. . .
    Refer back to register "a" when deleting everything before the address
:%s/^.*(\a)/\1/g
    And again when deleting everything after it
:%s/(\a).*$/\1/g
顺便说一句,我知道你可以删除之前和之后的插入语。我只是以它为例。

您可以使用Ctrl-R将寄存器的内容插入命令行。发件人:

CTRL-R{0-9a-z'%#:-=.}c\u CTRL-R-c_
插入编号或命名寄存器的内容。介于
键入CTRL-R,将显示第二个字符''''
指示您需要输入一个项目的名称
登记

如果您的注册表中有某些不寻常的字符,那么还有一个相关的可能会更好。

My可以为搜索模式本身添加一个特殊的中性标签,以便在搜索历史记录()中轻松识别它,并且它还具有只查看标记搜索的映射。这样,您就不需要像8bittree的回答所建议的那样,将模式存储在单独的Vim变量中。

可能应该添加如何将内容插入寄存器,因为问题中的语法似乎表明这也是未知的。要存储到所描述的寄存器中,您可能需要使用
:let@a='25[0-5]|2[0-4][0-9]|[0-1][0-9]{2}|[0-9]{1,2}\…'谢谢!我想我不可能是第一个有这个想法的人。
CTRL-R {0-9a-z"%#:-=.}                                  c_CTRL-R c_<C-R>
            Insert the contents of a numbered or named register.  Between
            typing CTRL-R and the second character '"' will be displayed
            to indicate that you are expected to enter the name of a
            register.