我正在尝试使用 vim ex 模式使用脚本自动对一组文件进行一些简单的修改。我想要做的是搜索一个模式,将其从当前位置删除(只是模式,而不是整行),然后将其粘贴到文档的末尾。
以下网址有一些有用的建议,但我觉得应该有一种方法可以做到这一点,而无需定义特殊功能。 http://vim.wikia.com/wiki/Copy_the_search_results_into_clipboard
建议?
我正在尝试使用 vim ex 模式使用脚本自动对一组文件进行一些简单的修改。我想要做的是搜索一个模式,将其从当前位置删除(只是模式,而不是整行),然后将其粘贴到文档的末尾。
以下网址有一些有用的建议,但我觉得应该有一种方法可以做到这一点,而无需定义特殊功能。 http://vim.wikia.com/wiki/Copy_the_search_results_into_clipboard
建议?
Ex 命令通常适用于整行。但是,我们可以使用该命令:s
将所有匹配项“捕获”到一个寄存器中,然后将它们粘贴到文档的末尾。
:let @a=""
:%s//\=matchstr(setreg('A',submatch(0),'l'),'')/g
:$put a
解释:
a
寄存器通过let @a=""
%s//...
.\=
作为替换submatch(0)
表示匹配的模式a
寄存器:setreg('A',submatch(0),'l')
setreg()
返回零,我们使用 matchstr() 基本上将其转换为空字符串/g
标志来匹配每行多次a
文件末尾$pu a
如需更多帮助,请参阅:
:h :let
:h :s
:h range
:h :s\=
:h submatch(
:h setreg(
:h matchstr(
:h :pu
:h registers