所以,假设我使用ag.vim通过文件搜索"禁用".它在quickfix窗口中返回一些结果:
1 first_file.rb|1 col 1| disabled something something
2 second_file.rb|1 col 2| disabled another something
Run Code Online (Sandbox Code Playgroud)
是否可以选择quickfix结果作为输入,grep通过它并在新的quickfix中打开结果?所以,如果我要输入:quickfix_grep first_file,新的quickfix只会弹出一个条目:
1 first_file.rb|1 col 1| disabled something something
Run Code Online (Sandbox Code Playgroud)
Ken*_*ent 18
已经为此要求编写了一个vim插件:https://github.com/sk1418/QFGrep
我对你的目标的理解是:
你的grep结果在你的quickfix中有点巨大,你想要缩小你对它的看法.通过输入带有正则表达式的命令,过滤grep结果.过滤后的结果也应显示在QuickFix窗口中,以便您可以打开/跳转到该文件.
如果以上是您想要的,请查看以下内容:
源此函数和命令行:
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>)
Run Code Online (Sandbox Code Playgroud)
然后你的grep/ack /你的quickfix中的任何显示内容后,你可以输入
:GrepQF <regex>
Run Code Online (Sandbox Code Playgroud)
在您的quickfix中进行过滤.
在这里我添加一个GIF动画.我正在使用Ack而不是grep,但它没有任何区别.给定的正则表达式将匹配文件名和quickfix中显示的文本.我做了两次过滤来表明这一点.

希望能帮助到你.
我对这个问题的解决方案一直是默认情况下修改quickfix缓冲区:
:autocmd BufReadPost quickfix set modifiable
Run Code Online (Sandbox Code Playgroud)
这样做可以为任何适当的编辑打开一系列可能性,例如添加注释,手动删除不相关的条目或使用:global和:vglobal命令进行过滤.
自21.8.2018(补丁:8.1.0311)起,插件cfilter与 vim 一起分发$VIMRUNTIME。它记录在:h cfilter-plugin.
需要时加载插件cfilter或始终在您的 vimrc 中加载它
:packadd cfilter
Run Code Online (Sandbox Code Playgroud)
过滤quickfix列表
:Cfilter DPUST
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1647 次 |
| 最近记录: |