9

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

#page-site-index .toolbar .items {

如何捕获“.toolbar .items”部分并将其用于替换 Vim S&R 的部分,所以这个选择器可以变成:

#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 的终端版本。

4

4 回答 4

19

使用\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
于 2013-03-27T15:47:18.487 回答
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
于 2013-03-27T15:50:16.397 回答
2

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

于 2013-03-27T16:02:12.703 回答
0

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

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

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

于 2013-03-27T15:47:38.050 回答