Re: [OT] vim, suche über alle geöffneten files

From: Peter Wullinger <peter.wullinger(at)gmail.com>
Date: Tue, 16 Aug 2005 22:59:07 +0200

In epistula a J. Erik Heinz, die horaque Tue, Aug 16, 2005 at 08:12:32PM +0200:
>
> [snip]
>
> Damit suchst du nur in der aktuellen Datei. Ich will jedoch wenn ich
> beispielsweise 5 Dateien im vim aufhabe, in allen gleichzeitig nach
> einem string suche.
>

Als schneller, verbesserungswürdiger "Hack":

function SearchAll(regex)
        let i = 0
        let current_buffer = winbufnr(0)
        execute "buffer" current_buffer

        let line_no = search(a:regex)
        let next_buffer = current_buffer
        while line_no == 0
                let last_buffer = bufnr("$")

                let next_buffer = next_buffer + 1
                while ! bufexists(next_buffer)
                        let next_buffer = next_buffer + 1
                        if (next_buffer > last_buffer)
                                let next_buffer = 1
                        endif
                endwhile

                execute "buffer " . next_buffer

                if next_buffer == current_buffer
                        echoerr "Expression " . a:regex . " not found in open buffers"
                        return
                endif

                let line_no = search(a:regex)
        endwhile
endfunction

command -nargs=1 SearchAll call SearchAll("<args>")
Die while-Schleife kann man sicherlich noch ein wenig optimieren und
der Name "current_buffer" ist ein wenig irreführend, aber man möge mir
das verzeihen ;-)

Aufruf erst mal mit ":SearchAll {expr}", wobei man sich das
wohl gerne auf ein Tastenkürzel legen möchte. Aber für mehr Details
bin ich heute nicht mehr in der Lage :-/.

Gruß,
        Peter
 

-- 
To Unsubscribe: send mail to majordomo(at)de.FreeBSD.org
with "unsubscribe de-bsd-questions" in the body of the message
Received on Tue 16 Aug 2005 - 22:59:56 CEST

search this site