vim ex模式:复制模式并粘贴到文件末尾?

use*_*655 1 vim copy-paste ex

我正在尝试使用vim ex模式使用脚本自动对一组文件进行一些简单的修改.我想要做的是搜索模式,从当前位置(只是模式,而不是整行)删除它,并将其粘贴到文档的末尾.

在以下URL中有一些有用的建议,但我觉得应该有一种方法可以在不定义特殊功能的情况下执行此操作. http://vim.wikia.com/wiki/Copy_the_search_results_into_clipboard

建议?

Pet*_*ker 5

Ex命令通常适用于整行.但是,我们可以使用该命令:s将所有匹配"捕获"到一个寄存器中,然后将它们粘贴到文档的末尾.

:let @a=""
:%s//\=matchstr(setreg('A',submatch(0),'l'),'')/g
:$put a
Run Code Online (Sandbox Code Playgroud)

说明:

  • 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
Run Code Online (Sandbox Code Playgroud)