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 messageReceived on Tue 16 Aug 2005 - 22:59:56 CEST