On 5/31/06, Eric Arnold <[EMAIL PROTECTED]> wrote:
On 5/31/06, Cory Echols <[EMAIL PROTECTED]> wrote:
> On 5/31/06, Bernhard Leiner <[EMAIL PROTECTED]> wrote:
> > Hi!
> >
> > I'm looking for a good soultion to to search for a keyword in all open 
buffers.
> >
> > Using the :bufdo command to search in all buffers basically does what
> > I want but the output isn't very useable. Using :vimgrep on multiple
> > _files_ with its output in the quickfix window is much better but
> > works only on files.
> >
> > Sombody has an idea?
>
> Like most vim commands, if you use '%' as the file name argument to a
> vimgrep command, it will expand to the filename of the current buffer.
>  This means you can use:
>
> :bufdo vimgrepadd /pattern/ %
>
> The catch is that 'vimgrepadd' *adds* matches to the current match
> list.  If there's already entries in it, they'll be added to instead
> of replaced.  I couldn't find any command that would clear the current

:cex ''

works.


> quickfix list, so I suppose you'd have to search for an unmatchable
> pattern to clear it.  Try 200 x's anchored at the beginning of a line
> in the current buffer.  Another catch is that I couldn't get :vimgrep
> to accept a '|' command separator, so you have to do them in two
> steps.
>
> :vimgrep /\v^x{200}/ %
> :bufdo vimgrepadd /pattern/ %
>

I guess you'll have to make a function instead of using "|" for
commands like this.

I think vimgrep can be followed by '|', but the error interrupts the
command.  You could do something like:

:silent! vimgrep /\v^x{200}/ % | bufdo vimgrepadd /pattern/ %

For commands that really don't allow '|' for chaining other commands,
you can use ':execute' to do so in some cases:

:execute 'silent! vimgrep /\v^x{200}/ %' | bufdo vimgrepadd /pattern/ %

Thanks,

bob

Reply via email to