search - 如何在vim中搜索某个值,然后使用该值在同一行中进行搜索和替换?

标签 search vim replace vi

我有以下几行,其中第一列是场景名称,后面是参数列表。

我想使用第一列值作为参数 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/

相关文章:

search - Elasticsearch-为什么更新文档后我没有得到相同的搜索结果?

vim - 在vim中保存新文件,其中文件名存储在寄存器中?

regex - 在vim中自动斜线反斜线

python - 如何将一个字符串的前两个字母与第二个字符串的前两个字母交换?

ruby-on-rails - 用太阳黑子重新索引一个特定的记录

algorithm - 回溯和暴力搜索之间的区别

vim - DBext (Vim) - 必须选择有效的数据库类型

linux - 替换文件 Unix 中的字符串

python - 字符串替换似乎不起作用

python - 无法通过在 Python 中搜索 csv 文件获得结果