Как искать по каталогу файлов в vim? - PullRequest
28 голосов
/ 03 февраля 2010

Обычная задача программирования для меня в vim:

:s/some pattern/

поработай

n # находит следующую запись

поработай

n # находит следующую запись ...

Теперь s/.... выполняет поиск только в текущем файле.

Есть ли способ, которым я могу сделать это, но искать в каталоге файлов? Скажите «s /..../» для всех файлов в подкаталогах pwd, оканчивающихся на .hpp из .cpp ?

Спасибо!

Ответы [ 3 ]

29 голосов
/ 03 февраля 2010

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

Просто введите:help grep, чтобы получить хорошую документацию о том, что доступно из коробки в Vim.Использование :grep foo *.?pp должно делать то, что вы хотите.Откроется список QuickFix , аналогичный тому, который вы получаете, используя :make, что позволит перейти к найденным вхождениям.

3 голосов
/ 13 декабря 2011
:help windo
:help bufdo
man find
man xargs

find ./start/point -iname "*.cpp" -print0 | xargs -0 vim
:bufdo s/baar/foo/gc
:wall
:qall

gc "глобальное подтверждение", стена (напишите все), qall (совсем все). Чтобы увидеть список файлов: ls top перейдите к следующему файлу: wn (напишите следующее) или: bn (следующий буфер). Кстати, xargs управляет большими кусками файла в памяти, чтобы доставить vim без ошибок.

2 голосов
/ 07 ноября 2018

Существует фантастический плагин с именем ctrlsf.vim , который позволяет эффективно выполнять поиск в vim.

Вот снимок этого. Довольно круто, не правда ли?

enter image description here

Например, если вы хотите найти слово поиска, например "hello" в текущем каталоге, после установки все, что вам нужно сделать, это просто набрать:

:CtrlSF "hello"

тогда вы получите то, что ожидаете.

Веселись!

...