如何在VIM中使用sed将== string更改为eq(string)?

时间:2015-12-17 20:53:03

标签: vim sed

我可以用eq替换==(但我不确定如何在==之后抓取字符串并将其放回替换为a)。有没有人有解决方案?

我正在使用:%s/== /eq(/g,但我需要在现有字符串的末尾获取。

我尝试了:%s/== .*/eq(&)/g但是当我运行它时,我意识到这也是将“==”带入我想要摆脱的替换字符串中。

我想我希望有一种方法可以捕获一个未知的字符串并将该确切的字符串放回到替换行中。像:%s/== .*/eq(.*)/g这样的东西,其中。*是未知的字符串。第一部分工作并抓住字符串,但不知道如何将其放回替换线上。特别是因为我不知道字符串可能有多少个字符/单词。

解决方案::%s/== \(.*\)/eq(\1)/

2 个答案:

答案 0 :(得分:2)

您需要捕获文本

:%s/== \(.*\)/eq(\1)/

您不需要g标志,因为“字符串”延伸到该行的末尾,因此只会有一个匹配。

答案 1 :(得分:1)

使用反向引用应该有效:

:%s/== \(.*\)/eq(\1)/g