如何在Vim中搜索打开的缓冲区?

squ*_*rel 41 vim search

我想在vim中当前打开的所有文件中搜索文本,并在一个地方显示所有结果.我想有两个问题:

  • 我无法将打开文件列表传递给:grep/ :vim,尤其是不在磁盘上的文件名;
  • 结果:grep -C 1 text在quickfix窗口中看起来不太好.

这是Sublime Text 2中多文件搜索的一个很好的例子:在此输入图像描述

有任何想法吗?

rom*_*inl 39

要么

:bufdo vimgrepadd threading % | copen
Run Code Online (Sandbox Code Playgroud)

quickfix窗口对你来说可能看起来不太好,但它比ST2的"结果面板"更具功能性,只是因为你可以在跳转到位置时保持打开和可见,如果它不存在则与它进行交互.

  • 通过执行以下操作显着加快搜索速度:通过执行以下操作来实现autocmd:noautocmd bufdo grepadd threading%` (2认同)
  • `/threading/j` 不打开新标签页。在这样做之前能够清除快速修复会很好:http://stackoverflow.com/questions/27385970/clearing-the-quickfix-list-in-vim (2认同)
  • 使用 `:cexpr []` 清空您的快速修复列表,然后再开始使用 `vimgrepadd` 将内容放在那里 (2认同)

Con*_*ner 6

ack和Ack.vim很好地处理这个问题.你也可以使用:help :vimgrep.例如:

:bufdo AckAdd -n threading
Run Code Online (Sandbox Code Playgroud)

将创建一个很好的quickfix窗口,让您跳转到光标位置.

  • 如果没有打开它在分裂中找到结果的所有缓冲区,你如何才能使它工作? (6认同)