假设我使用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中显示的文本。我做了两次过滤来证明这一点。希望能帮助到你。