2010-02-03 5 views
26

Обычным программирования задача для меня в Vim является:Как искать через каталог файлов в vim?

:s/some pattern/ 

сделать некоторую работу

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

сделать некоторую работу

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

s/.... только поиск в текущем файле.

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

Спасибо!

+0

Это всего лишь своего рода обходной путь, поэтому я не отправляю его в качестве ответа: вы можете открыть все файлы в одном сеансе vim, чтобы вы могли: n перейти к следующему, а затем записать макрос, который делает: s/.../и: n и выполнить макрос достаточно большое количество раз. (слишком быстрый запуск макроса не принесет никакого вреда, поскольку подстановка будет просто проверяться снова и снова для последнего файла) – Frank

ответ

26

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

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

3
: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 "global confirm", wall (написать все), qall (совершенно все). Чтобы просмотреть список файлов: ls top перейти к следующему файлу: wn (написать далее) или: bn (следующий буфер). Кстати, xargs управляет большими кусками файла в памяти, чтобы доставить vim withou erros.

Смежные вопросы