我有以下几行代码,其中第一列是场景名称,其后是参数列表。
我想将第一列值用作参数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
%s/\v^(\w+).*/\=substitute(getline('.'),'scen=','&'.submatch(1),'g')/
这条线看起来很长,但更容易理解。
ps如果您的行有多个目标模式,则此行有效(scen=
此处)
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句