Откройте все файлы, которые соответствуют определенному шаблону в Vim

Я нахожусь в ~/src. Я могу сделать git grep _pattern_ и получите список всех *.cpp или *.hpp файлы, которые соответствуют этому шаблону.

Теперь я хотел бы пройти все файлы, которые соответствуют шаблону и делают редактирования на них. Как я делаю это в Vim? (В основном я хочу, чтобы Vim прошел мой каталог как мерзавец grep, делает и переходят меня в правильные файлы.)

9
задан TRiG 29 April 2015 в 10:35
поделиться

4 ответа

Вы можете использовать один перевернутый запятыми (также функция оболочки Unix), что-то вроде:

vim `git grep --name-only <your expression>`
14
ответ дан 4 December 2019 в 07:14
поделиться

На бэше можно было бы сделать

vim $(grep -l _pattern_ *.cpp *.hpp)

, но это бэш-функция, а не vim-функция.

8
ответ дан 4 December 2019 в 07:14
поделиться

Вы могли бы установить параметры GreePPRG и GrepFormat, чтобы запустить Git Git ... и интерпретировать результат. Это затем позволит вам запустить команду: grep и прочитать результаты в буфер QuickFix - см. : H QuickFix для получения дополнительной информации. Затем вы можете пройти через них: cnext и: CPREV или: CPREV или: CPREV или: CPREV, чтобы открыть отдельное окно со списком файлов - поместив курсор на имя файла и нажатие возврата откроет этот файл для редактирования.

Преимущество этого над предложениями ZORAN и AMMOQ состоит в том, что он не будет читать файлы в память, пока вы не захотите их редактировать. Их предложение будет загружаться, возможно, сотни файлов в память сразу и может быть кошмаром для управления. Это также перекрестная платформа, поэтому следует работать на окнах без необходимости использовать стороннюю оболочку, такую ​​как Cygwin Bash.

2
ответ дан 4 December 2019 в 07:14
поделиться

вы можете использовать команду args ex:

:args *.cpp *.hpp

Это откроет все файлы cpp и hpp в текущем каталоге.

Вы также можете использовать любое расширение пути к файлу, доступное для: grep.

5
ответ дан 4 December 2019 в 07:14
поделиться
Другие вопросы по тегам:

Похожие вопросы: