我可以将包含“ lblfig”的行捕获到m
寄存器中,如下所示:
/lblfig
:let @m=@_ | %g//yank M
然后,我可以将此行集合粘贴到新的缓冲区中,如下所示:
:new | exe "normal! \"mp"
但是,当我尝试将最后两个命令行作为一个命令一起运行时,如下所示:
:let @m=@_ | %g//yank M | new | exe "normal! \"mp"
-我只将粘贴的第一行粘贴到新缓冲区中。
那么,如何作为单个命令行来做到这一点呢?
问题在于,由于全局命令允许您|
在它们之间执行多个命令,因此假定全局命令之后的命令是全局命令的一部分。例如,您打算这样做:
%g// "On every line containing lblfig:
yank M "Yank into register 'M'
"then AFTERWARDS:
| new | exe "normal! \"mp" "Paste it into a new buffer.
这是vim实际在做什么:
%g// "On every line containing lblfig:
yank M | new | exe "normal! \"mp" "Yank into register AND Paste it into a new buffer.
解决方法非常简单。只需将全局命令包装在“ execute”语句中即可。
let @m=@_ | exe '%g//yank M' | new | exe "normal! \"mp"
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句