:[ubstitution]函数的意外行为。
鉴于文件:
let @a='fish'
填充的注册表' a':
:%s/\(cat\)/\1\=@a/g
执行以下命令:
dog
cat=@a
cow
将文件修改为:
dog
catfish
cow
我希望输出结果为:
{{1}}
是否需要在:s函数中使用捕获组符号或寄存器符号的某种封装/分隔符,以便它们在彼此相邻时按预期工作?
答案 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