我有以下几行,其中第一列是场景名称,后面是参数列表。
我想使用第一列值作为参数 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
最佳答案
一个(更短的)替代方案是 :global
,它使用普通模式命令来提取第一个单词,然后将其附加在 scen=
匹配之后:
:global/scen=/normal! yenEp
关于search - 如何在vim中搜索某个值,然后使用该值在同一行中进行搜索和替换?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28798068/