我发现了 VIM 搜索的一个不错的功能,即列出所有搜索结果和相应的行号。
例如:
:g/for.*bar/#
问题:是否有一种“简单”的方法可以将其通过管道/放入另一个窗口/选项卡/缓冲区?
干杯!
我不知道如何将输出通过管道传输:g/for.*bar/#
到新的缓冲区中,但我知道如何使用vimgrep
来获得相同的结果。
尝试:
vimgrep "for.*bar" %
:copen
现在您有了一个包含所有搜索结果的缓冲区,您甚至可以使用:cn
和在它们之间导航:cp
。
看一眼:help quickfix
我不知道如何将输出直接重定向到缓冲区,但您可以使用redir
将其发送到寄存器,然后将该寄存器粘贴到新缓冲区。
:redir @a
:g/for.*bar/#
:redir END
:enew
:put! a
( #
after :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