搜索多行并将其复制到剪贴板

时间:2016-11-15 16:50:42

标签: search vim copy

我的menu.vim文件中有多个python脚本 我想将它们复制到剪贴板。

所有python脚本都是这样的:

python3 << endpython   
.......code......   
endpython   

我使用此搜索命令:

^python3\_.\{-}\_^endpython

在我看来,即使没有突出显示所有行,也是正确的命令(可能是因为脚本比我的屏幕显示更长)。

但是如何将多行搜索复制到剪贴板? 这是要走的路吗?

g/pattern/y A

2 个答案:

答案 0 :(得分:4)

您可以使用:

:g/^python3/,/^endpython/y +

我认为这里的“缺失部分”是您可以使用特殊的+*寄存器与剪贴板进行交互。请参阅:help quoteplus:help quotestar

另请参阅How can I copy text to the system clipboard from Vim?以获得有关Vim和剪贴板交互的更深入说明。

答案 1 :(得分:4)

你是对的;解决方案涉及:global(迭代所有匹配的范围)和大写寄存器(以累积范围):

:let @a = '' | global/^python3/,/^endpython/yank A

如果您需要系统剪贴板中的结果,可以通过

执行此操作
:let @+ = @a

插件替代

如果这些多个命令太麻烦,我的PatternsOnText plugin提供(以及其他)此快捷命令:

:YankRanges/^python3/,/^endpython/ +