Найти/Grep во всех буферах VI

С открытием многих буферов мне нужен простой способ поиска всех буферов для регулярного выражения и навигации по результату поиска (быстрый список?)

Я знаю, что могу :bufdo команду, и ее легко найти и заменить с помощью %s, но я не могу найти способ сделать простой поиск, а затем перейти к результатам.

Я нашел плагины для этого (например, buffergrep), но я буду удивлен, если эта простая задача не поддерживается с помощью трюка vim.. это?

Ответ 1

:grep и co. будет заполнять буфер QuickFix, что позволяет быстро перемещаться между результатами.

Ответ 2

от :help grepadd

:grepa[dd][!] [arguments]
            Just like ":grep", but instead of making a new list of
            errors the matches are appended to the current list.
            Example:
                :call setqflist([])
                :bufdo grepadd! something %
            The first command makes a new error list which is
            empty.  The second command executes "grepadd" for each
            listed buffer.  Note the use of ! to avoid that
            ":grepadd" jumps to the first error, which is not
            allowed with |:bufdo|.
            An example that uses the argument list and avoids
            errors for files without matches:
                                :silent argdo try 
                  \ | grepadd! something %
                  \ | catch /E480:/
                  \ | endtry"

Ответ 3

"Я нашел для этого плагины (например, buffergrep), но я буду удивлен, если эта простая задача не поддерживается с помощью трюка vim.. это?"

Не то, чтобы я знал. И существование нескольких плагинов, пытающихся предложить эту функциональность, как правило, подтверждает это.,.

Какие плагины вы пробовали и чего им не хватало?

http://www.vim.org/scripts/script.php?script_id=2545
http://www.vim.org/scripts/script.php?script_id=2255

Кроме того, чтобы убедиться, что вы знаете vimgrep, не так ли? Vimgrep - это внутренняя команда, которая загружает файлы в буферы и делает greps на буферах, с результатами в окне quickfix. Я не подтвердил, но я предполагаю, что поиск файла уже открыт в буфере, который Vimgrep не перезагружает, по крайней мере, если у него установлен флаг "nomodified". Если это так, одним из способов использования Vimgrep для быстрого и простого буферования grepping было бы просто создать список файлов для Vimgrep, используя вывод команды: buffers.