当我们使用cscope来定义vim中的符号时,很多候选者可能会显示在结果窗口中。我想在窗口内进行搜索,以便快速找到我需要的东西。但搜索功能(/)似乎在结果窗口中不起作用,只有几个键可用,j,k,gg,G等。
无论如何都要在cscope结果窗口中搜索?或者,任何人都可以分享一些如何在这种情况下更有效地工作的经验。
感谢。
答案 0 :(得分:2)
您可以使用以下内容:
" Filter the quickfix list
function! FilterQFList(type, action, pattern)
" get current quickfix list
let s:curList = getqflist()
let s:newList = []
for item in s:curList
if a:type == 0 " filter on file names
let s:cmpPat = bufname(item.bufnr)
elseif a:type == 1 " filter by line content
let s:cmpPat = item.text . item.pattern
endif
if item.valid
if a:action < 0
" Keep only nonmatching lines
if s:cmpPat !~ a:pattern
let s:newList += [item]
endif
else
" Keep only matching lines
if s:cmpPat =~ a:pattern
let s:newList += [item]
endif
endif
endif
endfor
call setqflist(s:newList)
endfunction
然后定义四个映射(用适合你的东西替换ø,我的开头用ð,我认为可能在键盘上不可用)分别映射到:
nnoremap ø :call FilterQFList(0, -1, inputdialog('Remove file names matching:', ''))<CR>
nnoremap ø :call FilterQFList(0, 1, inputdialog('Keep only file names matching:', ''))<CR>
nnoremap ø :call FilterQFList(1, -1, inputdialog('Remove all lines matching:', ''))<CR>
nnoremap ø :call FilterQFList(1, 1, inputdialog('Keep only lines matching:', ''))<CR>
这样您就可以使用任何模式过滤快速修复列表(您具有vim reg.exps的强大功能)。使用:cnewer
和:colder
跳转以前的quickfix列表。