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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Vim-在搜索时捕获字符串,并在替换时使用相关的知识,希望对你有一定的参考价值。

我有一个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的终端版本。

答案

使用\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
另一答案

在您的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
另一答案

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

另一答案

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

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

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

以上是关于Vim-在搜索时捕获字符串,并在替换时使用的主要内容,如果未能解决你的问题,请参考以下文章

在VIM中进行快速的查找和替换

如何在vim中用ack进行搜索和替换?

Vim编辑器常用命令汇总

Vim编辑器常用命令汇总

Vim编辑器常用命令汇总

Vim显示“…”并在搜索没有插件的文件时锁定