8

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

例如:

:g/for.*bar/#

问题:是否有一种“简单”的方法可以将其通过管道/放入另一个窗口/选项卡/缓冲区?

干杯!

4

3 回答 3

9

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

尝试:

vimgrep "for.*bar" %
:copen

现在您有了一个包含所有搜索结果的缓冲区,您甚至可以使用:cn和在它们之间导航:cp

看一眼:help quickfix

于 2012-11-09T11:26:23.530 回答
3

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

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

( #after :g) 将每个结果的行号添加到前面。

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

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

查看:help :redir更多。

于 2012-11-09T11:24:52.993 回答
1

称赞接受的答案:我做了一个映射,用 \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

于 2015-02-26T21:29:55.520 回答