Откройте все файлы, которые соответствуют определенному шаблону в Vim - PullRequest
9 голосов
/ 01 февраля 2010

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

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

Ответы [ 5 ]

13 голосов
/ 01 февраля 2010

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

vim `git grep --name-only <your expression>`
8 голосов
/ 01 февраля 2010

В bash вы можете сделать

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

но это функция bash, а не vim.

5 голосов
/ 12 февраля 2010

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

:args *.cpp *.hpp

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

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

2 голосов
/ 01 февраля 2010

Вы можете установить параметры grepprg и grepformat для запуска git grep... и интерпретировать результат. Это позволит вам запустить команду: grep и прочитать результаты в буфер быстрого исправления - см. :h quickfix для получения дополнительной информации. Затем вы можете просмотреть их с помощью: cnext и: cprev или: copen, чтобы открыть отдельное окно со списком файлов - поместив курсор на имя файла и нажав клавишу возврата, вы откроете файл для редактирования.

Преимущество этого по сравнению с предложениями Zoran и ammoQ заключается в том, что он не будет считывать файлы в память, пока вы не захотите их редактировать. Их предложение загружает, возможно, сотни файлов в память одновременно, и управлять им может быть кошмаром. Он также кроссплатформенный, поэтому должен работать в Windows без использования сторонней оболочки, такой как cygwin bash.

1 голос
/ 17 июля 2013

Правильно используя список быстрых исправлений, вы даже можете сразу перейти к правой строке (используя команды :help quickfix, например, :cn или :cw). Итак, если вы используете bash или zsh:

vim -q &lt(git grep foo)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...