假设我使用ag.vim插件通过多个文件搜索字符串disabled。它在quickfix窗口中返回一些结果:

1 first_file.rb|1 col 1| disabled something something
2 second_file.rb|1 col 2| disabled another something
是否可以选择Quickfix结果作为输入,通过它们进行grep,然后在新的quickfix窗口中打开结果?换句话说,如果我输入:quickfix_grep first_file,则仅需输入一项即可弹出新的快速修复程序:
1 first_file.rb|1 col 1| disabled something something

最佳答案

更新

已经为此要求编写了一个vim插件:https://github.com/sk1418/QFGrep

原始答案:

我对您的目标的理解是:



如果以上是您想要的,请查看以下内容:

源此函数和命令行:

function! GrepQuickFix(pat)
  let all = getqflist()
  for d in all
    if bufname(d['bufnr']) !~ a:pat && d['text'] !~ a:pat
        call remove(all, index(all,d))
    endif
  endfor
  call setqflist(all)
endfunction
command! -nargs=* GrepQF call GrepQuickFix(<q-args>)

然后在您的grep/ack/无论在quickfix中显示任何内容之后,您都可以输入
:GrepQF <regex>

在您的quickfix中进行过滤。

在这里,我添加了一个GIF动画。我使用的是Ack而不是grep,但这没什么区别。给定的正则表达式将匹配文件名和quickfix中显示的文本。我做了两次过滤来证明这一点。

希望能帮助到你。

10-08 19:10