在 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/