在 vim 中,我们可以用 sub-replace-expression 代替。当替代字符串以 \= 开头时,余数被解释为表达式。

例如带文字:

bar
bar

并替换命令:
:%s/.*/\='foo \0'/

给出了意想不到的结果:
foo \0
foo \0

代替:
foo bar
foo bar

问题是: 如何用匹配的模式来评估表达式?

最佳答案

当您使用子替换表达式时,像 &\1 这样的普通特殊替换不再起作用;一切都被解释为 Vimscript 表达式。幸运的是,您可以使用 submatches() 访问捕获的子匹配项,因此它变为:

:%s/.*/\='foo ' . submatch(0)/

关于vim - 用表达式和匹配的模式替换,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21038271/

10-13 07:56
查看更多