Это называется окном быстрого исправления. Видеть

мы используем cscope для определения символа в vim, в окне результатов может отображаться множество кандидатов. Я хотел бы выполнить поиск в окне, чтобы быстро найти то, что мне нужно. Но функция поиска (/), похоже, не работает в окне результатов, доступны только несколько клавиш, j, k, gg, G и т. Д.

Есть ли возможность искать в окне результатов cscope? Или кто-нибудь может поделиться опытом, как работать более эффективно в такой ситуации.

Благодарю.

Ответы на вопрос(1)

Решение Вопроса

Вы можете использовать следующее:

" 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 чтобы просмотреть предыдущие списки исправлений.

 Raymond10 янв. 2011 г., 15:21
Бенуа, спасибо, что поделился. Я могу понять ваш сценарий. Но я не понимаю, как использовать его вместе с cscope. Вывод cscope, похоже, не подходит к окну быстрого исправления. Можете ли вы показать, как вы используете это?
 Raymond10 янв. 2011 г., 16:09
Я не заметил эту опцию. Спасибо вам большое!
 Benoit10 янв. 2011 г., 15:26
Ты использовал:cscope add my_cscope_database.out тогда:cscope find s your_symbol ? Также убедитесь, что:set csqf=s-,c-,d-,i-,t-,e-, Также см:help cscope-options.
 Benoit11 янв. 2011 г., 07:06
Это называется окном быстрого исправления. Видеть:help quickfix!
 Raymond11 янв. 2011 г., 02:00
Кстати, вы знаете "официальное название" окна вывода cscope по умолчанию?

Ваш ответ на вопрос