vim替换捕获组后面的寄存器

时间:2016-06-03 17:31:27

标签: vim

:[ubstitution]函数的意外行为。

鉴于文件:

let @a='fish'

填充的注册表' a':

:%s/\(cat\)/\1\=@a/g

执行以下命令:

dog
cat=@a
cow

将文件修改为:

dog
catfish
cow

我希望输出结果为:

{{1}}

是否需要在:s函数中使用捕获组符号或寄存器符号的某种封装/分隔符,以便它们在彼此相邻时按预期工作?

2 个答案:

答案 0 :(得分:2)

\=必须在替换部分的开头出现。

错:

:s/cat/&\=@a                 <-- cat\=@a

右:

:s/cat/\=submatch(0) . @a    <-- catfish

请参阅:help s/\=

答案 1 :(得分:0)

您可以使用 Ctrl + R 插入a寄存器的内容。

:%s/cat/&<C-R>a/g
相关问题