可以说,我使用括号突出显示(匹配的)文本
/(.*)
现在,如何仅将突出显示的文本(即匹配模式,而不是整行)复制到缓冲区中,以便我将其粘贴到某个位置。
这个 Vim Tips Wiki 页面提供了多种方法。最简单的方法是以下自定义命令:
function! CopyMatches(reg)
let hits = []
%s//\=len(add(hits, submatch(0))) ? submatch(0) : ''/ge
let reg = empty(a:reg) ? '+' : a:reg
execute 'let @'.reg.' = join(hits, "\n") . "\n"'
endfunction
command! -register CopyMatches call CopyMatches(<q-reg>)
搜索时,您可以使用e
标志移动到匹配结束。因此,如果我正确理解您的问题,如果您使用例如:
/bar
如果您想复制它,请使用:
y//e
这将使用之前的搜索模式进行拉拽,直到匹配结束。