管道搜索结果到VIM中的其他选项卡/窗口/缓冲区



我找到了VIM搜索的一个不错的功能,即列出所有搜索结果和相应的行号。

例如:

:g/for.*bar/#

问题:是否有一种"简便"的方法将其输送/将其放入另一个窗口/TAB/缓冲区中?

欢呼!

我不知道如何将:g/for.*bar/#的输出输送到新的缓冲区中,但我确实知道如何使用vimgrep获得相同的结果。

尝试:

vimgrep "for.*bar" %
:copen

现在您有一个带有所有搜索结果的缓冲区,甚至可以在:cn:cp之间导航。

看一下:help quickfix

我不知道如何将输出直接重定向到缓冲区,但是您可以使用redir将其发送到寄存器,然后将寄存器粘贴到新的缓冲区中。

:redir @a
:g/for.*bar/#
:redir END
:enew
:put! a

#:g之后)预先置于每个结果的行号。

您也可以将其发送到文件。

:redir > file
:g/for.*bar/#
:redir END
:e file

有关更多信息,请参见:help :redir

称赞接受的答案:我做了一个映射以使用 ss(显示搜索)在QuickFix窗口上打开最后的搜索,将其添加到您的.vimrc:

" show last search results on the quickfix window at windows bottom
nnoremap <silent><leader>ss :vimgrep /<C-r>// % <CR> :botright copen <CR>

br

已经较晚了,但是对于另一种方法,我使用使用cword然后将内容发送到缓冲区的映射进行。对于我的工作流程,这是最有用的方法。

" Search for the word under the cursor in the entire file and take all lines and put them into a new vsplit buffer
noremap <leader>* :redir @s<CR>:silent g/^R^W/p<CR>:redir END<CR>:botright vnew<CR>:silent put s<CR>:nohlsearch<CR>

最新更新