在Vim中是否有一个搜索和替换的命令,每次出现都有不同的替换?

x6492ojm  于 6个月前  发布在  其他
关注(0)|答案(1)|浏览(61)

我有一个Cucumber脚本,用于测试一个网站,在该网站中,我想用一堆不同Portlet的名称填充"fum-portlet"

Then I should see element "fum-chart-portlet"

Then I should see element "fum-chart-portlet"

Then I should see element "fum-chart-portlet"

Then I should see element "fum-chart-portlet"

字符串
"fum-chart-portlet", "inflow-chart-portlet", "fees-chart-portlet"
据我所知,Vim只有用一个替换替换所有出现的选项。

6tdlim6h

6tdlim6h1#

如果你需要替换为变量字符串,你必须指定它们。根据你的文件的外观,可能有很多方法可以做到这一点。
替换它们的最简单方法是使用 blockwise Visual mode。格式化您希望它们出现在输出中的替换字符串列表(如果您不愿意更改源文件,请在 scratch buffer 中执行此操作)。
在您的示例中,行与行之间有一个空行,如下所示:

"fum-chart-portlet"

"inflow-chart-portlet"

"fees-chart-portlet"

字符串
将光标放在第一个字符上,按Ctrl+V进入分块可视模式,然后选择最后一个字符。按y拖动选择。
在目标缓冲区中,将光标放在第一个"fum-chart-portlet"的开始处,按Ctrl+V并选择底部。按p将所选块替换为先前拖动的块。
请参阅:help visual-block了解更多信息。
另一个想法是增量搜索和替换。您可以转到替换列表并将yi"作为第一个字符串。然后搜索/"\zsfum-chart-portlet\ze"。(\zs\ze用于从匹配中排除引号,参见:help /\zs),按gn以视觉方式选择它的 * 下一个 * 出现,然后按p在所选内容上选择字符串。重复操作直到完成。参考:help v_gn
实际上,我会使用简单的手动方法,通过搜索/"\zsfum\ze-chart-portlet"然后搜索gncinflow<Esc>gncfees<Esc>来替换第一部分。

相关问题