【发布时间】:2015-05-02 02:42:35
【问题描述】:
我有以下几行,其中第一列是场景名称,后面是参数列表。
我想将第一列的值用作参数 scen= 的值,它可能位于参数列表中的任何位置。
例如,如果我开始:
InstallFull server1=solaris10 server2=solaris11 scen= email= disk=
InstallPartial server1=solaris20 server2=solaris21 email= scen= disk=
InstallMinimum server1=solaris30 server2=solaris32 disk= email= scen=
我想这样结束:
InstallFull server1=solaris10 server2=solaris11 scen=InstallFull email= disk=
InstallPartial server1=solaris20 server2=solaris21 email= scen=InstallPartial disk=
InstallMinimum server1=solaris30 server2=solaris32 disk= email= scen=InstallMinimum
我使用了以下搜索并用反向引用语法替换:
:%s/\(.\{-\}\) \(.*\)\(scen=\)\(.*\)/\1 \2 \3\1 \4/gc
但我正在寻找一种更简单的方法。
也许有一种方法可以运行多个命令,其中第一个命令将搜索结果保存到一个变量中,第二个命令使用该变量进行搜索和替换。
我正在寻找 VI 单行命令,但如果此类单行命令不存在,也欢迎使用函数。 :-)
谢谢。
RaamEE
【问题讨论】:
-
@/变量包含最后一次搜索,所以这可能会有所帮助。 -
感谢@EvergreenTree。 @/ 包含搜索正则表达式。在这种情况下我无法使用。