Vim-在搜索时捕获字符串,并在替换时使用

问题描述 投票:6回答:4

我有一个CSS选择器,例如:

#page-site-index .toolbar .items {

我如何捕获“ .toolbar .items”部分并在Vim S&R的Replace部分中使用它,因此该选择器可以变成:

#page-site-index .toolbar .items, #page-site-login .toolbar .items {

类似:

%s:/#page-site-index \(.toolbar .items\)/#page-site-index (the captured string), #page-site-login (the captured string)/g

顺便说一句,我正在使用Vim的终端版本。

bash search vim replace
4个回答
14
投票

使用\1 ...在此查看Wiki:http://vim.wikia.com/wiki/Search_and_replace

更明确:

%s:/#page-site-index \(.toolbar .items\)/#page-site-index \1, #page-site-login \1/g

2
投票

在您的vim中尝试此命令:

%s/\v#(page-site-index )(\.toolbar \.items)/&, #page-site-login \2/g

您也可以使用\zs, \ze但不分组:

%s/#page-site-index \zs\.toolbar \.items\ze/&, #page-site-login &/g

继续打高尔夫球,如果文字与您所提供的文字一样,您可以:

%s/#page-site-index \zs[^{]*\ze /&, #page-site-login &/g

2
投票

您已经尝试通过\(...\)对正则表达式的有趣部分进行了分组。要在替换零件中引用这些captured submatchs,请使用\1\2等,其中数字从左到右表示第一个(打开的)捕获组。整个匹配的文本还有\0 == &。有关更多信息,请参见:help /\1


0
投票

首先输入:进入命令模式。然后发出以下命令:

%s/#page-site-index .toolbar .items/#page-site-index .toolbar, #page-site-login
.toolbar .items/

不关心格式,这是因为stackoverflow markdown解析器。...

© www.soinside.com 2019 - 2024. All rights reserved.