anon
anon

Reputation: 42697

How to search across a directory of files in vim?

A common programming task for me in vim is:

:s/some pattern/

do some work

n # finds the next entry

do some work

n # finds the next entry ...

Now, s/.... only searches in the current file.

Is there a way I can do this, but search across a directory of files? Say do "s/..../" over all files in subdirectoires of pwd that ends in .hpp of .cpp ?

Thanks!

Upvotes: 37

Views: 45132

Answers (3)

tonio
tonio

Reputation: 10541

You can simply use the :grep command: or for a more complete integration of search tools, use the grep.vim extension.

Simply type :help grep to get a nice documentation of what is available out of the box in Vim. Using :grep foo *.?pp should do what you want. This will open the QuickFix list, just like the one you get using :make, enabling to jump to the found occurrences.

Upvotes: 38

请叫我小马哥
请叫我小马哥

Reputation: 1731

There is a fantastic plugin named ctrlsf.vim ,which makes you search in vim efficiently.

Here is a snapshot of it.Quite cool ,isn't it?

enter image description here

For instance , If you want search word like "hello" in current dir , after installation , all you need to do is Simply type:

:CtrlSF "hello"

then you'll get what you expect.

Have fun!

Upvotes: 8

SergioAraujo
SergioAraujo

Reputation: 11830

: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 (write all), qall (quite all). To see file list :ls top jump to next file :wn (write next) or :bn (buffer next). By the way, xargs manage large chunks of file in memory to deliver to vim withou erros.

Upvotes: 2

Related Questions