我在命令行中有多个命令,用于在未命名的寄存器@“中构建一个文本字符串。然后我有一个替换来捕获几个原子。最后,我需要用两个子匹配替换一个模式( \ 1和\ 2)和@“。
在第一次显示子匹配后,我无法让@“reg显示其内容。我可以在显示子匹配之前显示@”。例如:
multi-commands | @"=textString | 'a,'bs/(atom1)(atom2)/\1\2 "displays perfectly
或者,
multi-commands | @"=textString | 'a,'bs/(atom1)(atom2)/\=@" "displays 'textString' perfectly
但是,
multi-commands | @"=textString | 'a,'bs/(atom1)(atom2)/\1\2@"
multi-commands | @"=textString | 'a,'bs/(atom1)(atom2)/\1\2\@"
multi-commands | @"=textString | 'a,'bs/(atom1)(atom2)/\1\2\=@"
所有都无法显示'textString'的寄存器内容,而是显示'@“'
有谁知道为什么会这样?
答案 0 :(得分:3)
这是因为\=
需要成为替换中的第一项。
您应该使用以下内容:
:'a,'bs/(atom1)(atom2)/\=submatch(1).submatch(2).@"