首页 > 解决方案 > 如何定位所有出现的搜索字符串

问题描述

使用替换,我想替换

ones(var1.size,var2.size)

np.ones([var1.size,var2.size])

我尝试使用

%s/ones(\(\w\+\),\(\w\+\))/np.ones([\1,\2])/gc

然而,根据 Stack Overflow 上的其他帖子,Vim 无法找到所有出现的搜索短语。

它能够找到ones(3,1)并将其更改为np.ones([3,1]),但无法找到ones(1,xi.size)

我哪里错了?

标签: vimreplace

解决方案


你太难了 下面是我如何弄清楚 Vim 将要做什么,并将其分解为更简单的步骤:

/ones(\(.\+\))

将选择括号内的内容,然后按Return以便 Vim 记住模式。

:%s//np.ones([\1])/

获取记住的模式并替换它。当然,事先根据需要调整您的标志。

简单匹配var1.size,var2.size

正则表达式非常强大,但也可能令人抓狂,因此请让它们尽可能简单,因为它们做错事情的可能性会随着复杂性的增加而增加。


推荐阅读