Найти / Grep во всех буферах VI - PullRequest
10 голосов
/ 08 декабря 2010

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

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

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

Ответы [ 3 ]

4 голосов
/ 08 декабря 2010

:grep & co. заполнит буфер QuickFix, который обеспечивает быструю навигацию между результатами.

3 голосов
/ 19 января 2011

от :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"
2 голосов
/ 09 декабря 2010

"Я нашел плагины для этого (например, 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 для буферов, в результате чего появляется окно быстрого исправления.Я не подтвердил, но я предполагаю, что искомый файл уже открыт в буфере, что Vimgrep не перезагружает его, по крайней мере, если он имеет установленный флаг 'nomodified'.Если это так, то одним из способов использования Vimgrep для быстрой и простой подстройки буфера было бы просто создать список файлов для Vimgrep, используя вывод команды: buffers.

...