Vim имеет несколько команд, интегрирующих и реализующих возможности Grep (см.
:help grep
). Двумя основными из них являются :grep
и :vimgrep
. Бывший
использует внешнюю программу Grep (устанавливается параметром grepprg
), в то время как последний использует
Основные функциональные возможности Grep, реализованные в самом Vim.
Основными преимуществами внутреннего :vimgrep
являются синтаксис Vim regex и
переносимость, которая включает в себя **
glob wildcard. Команда :vimgrep
понимает подмножество расширенных шаблонов глобуса (см. :help wildcard
). это
позволяет избежать команды find
в большинстве случаев. Используя :vimgrep
, ваш
Пример поиска будет выглядеть следующим образом.
:vimgrep /something/ **/*
Тот же поиск можно выполнить с помощью команды :grep
, если ваша оболочка или
grepprg
реализует подстановочный знак **
. Ниже приведен пример, показывающий Zsh
расширенное обозначение глобуса.
:grep 'something' **/*(.)
Обе эти команды (и их варианты) используют функции интерфейса Vim
вызывается список QuickFix и его окно-локальная версия, список местоположений (см. :help
quickfix
). Окно QuickFix - это специальный буфер только для чтения, содержащий любые
результаты поиска, относящиеся к одному или нескольким файлам. Результаты поиска
Собранные командами Grep немедленно агрегируются в окне QuickFix.
Список QuickFix представляет каждую совпадающую позицию шаблона поиска
одной строкой и позволяет быстро переключаться между ними нажатием
Введите в этих строках. Существует не мало команд, связанных с
Список быстрых исправлений. Здесь я перечислю только некоторые из них в качестве отправной точки (см. Помощь
для дополнительной информации).
:cw
или :cope
открыть окно QuickFix (см. Справку, чтобы понять
разница между ними).
:cc
, :cn
, :cp
отображают текущий, следующий и предыдущий
совпадение в списке соответственно.
:cr
, :cla
отображают первое и последнее совпадение в списке,
соответственно.
:ccl
закрывает окно QuickFix.
Список местоположений - это список QuickFix, прикрепленный к определенному окну. Каждое окно
может быть привязан к одному списку местоположений (независимо от других
списки расположения окон и список QuickFix). Любая команда списка QuickFix
из перечисленных выше аналогично работает со списком местоположений.
:lw
или :lop
открыть список местоположений, связанный с текущим
окно.
:ll
, :lne
, :lp
отображают текущий, следующий и предыдущий
совпадение в списке соответственно.
:lr
, :lla
отображают первое и последнее совпадение в списке,
соответственно.
:lcl
закрывает список местоположений.
Аналогами списка местоположений команд :grep
и :vimgrep
являются :lgrep
и :lvimgrep
соответственно.