из исходного поста неясно, что вы подразумеваете под «легко работать с ним», но часто полезно видеть и быстро переключаться между всеми совпадениями в буфере, не «извлекая» совпадения в отдельный буфер.
В vim встроен внутренний grep. Ваш пример будет примерно таким (в vim %
обозначает текущий файл)
:vimgrep /label/ %
Это приведет вас к первому вхождению и сообщит, сколько было совпадений. Круто то, что вы можете просмотреть все совпадения, перечисленные в списке, открыв список ошибок быстрого исправления, используя
:cope
Теперь вы можете просто прокрутить круг и нажать enter
на строке, чтобы перейти к точному положению матча.
Список ошибок быстрого исправления - это тот же буфер, который вы используете, если вы запускаете make изнутри vim и ваш компилятор выдает ошибки: он дает вам список того, что и где находятся ошибки.
После того, как вы перепрыгнули в одно место, на которое указывает быстрое исправление, вы можете перейти вперед и назад в списке с помощью :cn
и :cp
. :ccl
закрывает список ошибок.
Вы также можете расширить свой список «ошибок» с помощью :vimgrepa /newpattern/ %
или :vimgrepadd
(задокументированное) предостережение в том, что внутренний grep в vim медленнее, чем в большинстве собственных реализаций grep (но вы, например, получаете его "бесплатно" в windows). Если у вас установлен grep, вы можете использовать: grep вместо: vimgrep для похожих результатов.
цитирование :help grep
У Vim есть два способа найти совпадения для
рисунок: внутренний и внешний.
Преимущество внутреннего grep в том, что
он работает на всех системах и использует
мощные шаблоны поиска Vim.
внешняя программа grep может использоваться, когда
Vim grep не делает то, что вы
хочу.
Внутренний метод будет медленнее,
потому что файлы читаются в память.
Преимущества:
- Разделители строк и кодировка автоматически распознаются, как будто файл
редактируется.
- Использует шаблоны поиска Vim. Можно использовать многострочные шаблоны.
- Когда плагины включены: можно искать сжатые и удаленные файлы.
Вы также можете использовать список местоположений, если вы уже используете список ошибок для обработки ошибок компиляции. просто добавьте l
(для location
) в начало команды grep (:lvimgrep
, :lvimgrepa
:lgrep
, :lgrepa
) и используйте :lopen
:ln
:lp
:lcl
вместо :c*
из них.
Для дополнительных команд обратитесь к
:help grep
:help quickfix-window
:help quickfix
:help quickfix-error-lists