捕获组后寄存器的vim替换

捕获组后寄存器的vim替换,vim,Vim,:s[Substitution]函数的意外行为 给定文件: dog cat cow 和填充寄存器“a”: let @a='fish' 执行以下命令: :%s/\(cat\)/\1\=@a/g 将文件修改为: dog cat=@a cow 我期望输出为: dog catfish cow 在:s函数中是否需要对捕获组符号或寄存器符号进行某种封装/分隔,以便它们在相邻时按预期工作?您可以使用Ctrl+R插入a寄存器的内容 :%s/cat/&<C-R>a/g :%s/ca

:s[Substitution]函数的意外行为

给定文件:

dog
cat
cow
和填充寄存器“a”:

let @a='fish'
执行以下命令:

:%s/\(cat\)/\1\=@a/g
将文件修改为:

dog
cat=@a
cow
我期望输出为:

dog
catfish
cow
在:s函数中是否需要对捕获组符号或寄存器符号进行某种封装/分隔,以便它们在相邻时按预期工作?

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

:%s/cat/&<C-R>a/g
:%s/cat/&a/g
您可以使用Ctrl+R插入
寄存器的内容

:%s/cat/&<C-R>a/g
:%s/cat/&a/g

\=
必须在更换零件开始时提供

错:

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

:s/cat/&\=@a
\=
必须位于更换零件的开头

错:

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

:s/cat/&\=@a这是“寄存器”,不是“缓冲区”。这是“寄存器”,不是“缓冲区”。谢谢!我在这里找到了我认为您所指的帮助:
:help:s\=
:help sub replace-\=
也称为sub replace special和sub replace expression谢谢!我找到了我认为您在这里引用的帮助:
:help:s\=
:help sub replace-\=
分别称为sub replace特殊表达式和sub replace表达式