vimsuite/vimfiles/plugin/vgrepsup.vim
stefan 6a1ca9231a + matchit.vim
+ matchit syntax für a2l
blockdiff.vim: update (+ commands)

git-svn-id: https://vimsuite.svn.sourceforge.net/svnroot/vimsuite/trunk@150 eb2d0018-73a3-4aeb-bfe9-1def61c9ec69
2007-12-13 15:27:09 +00:00

89 lines
2.1 KiB
VimL

" Author: Michael Geddes ( vimmer at frog.wheelycreek.net )
"
" Created for zimnyx on IRC
" Version:0.3
"
" Gsub Do a global search replace on a directory.
" Bsub Do a buffer search replace.
"
"
" Copyright: Copyright me. Feel free to use, share, modify & distribute the
" script but acknowledge me please.
"
" vim: ts=2 sw=2 et
fun! GlobSearchReplace( fileglob, sub, rep, flag)
let v:errmsg=''
exe 'vimgrep /'.escape(a:sub,'/').'/ '.a:fileglob
if v:errmsg != '' | return 0 | endif
let countup=0
let more=1
while 1
silent exe 's/'.escape(a:sub, '/').'/'.escape(a:rep,'/').'/'.a:flag
let countup+=1
try
silent cnext
catch
if v:exception !~ 'E553:' | echoerr v:exception | endif
break
endtry
endwhile
return countup
endfun
fun! BufSearchReplace( fileglob, sub, rep, flag)
if a:fileglob != ''
echoerr 'Filter not supported'
else
exe 'bufdo %s/'.escape(a:sub, '/').'/'.escape(a:rep,'/').'/'.a:flag
end
endfun
fun! s:CallGlobReplace(func, str)
if strlen(a:str) == 0
echoerr 'Usage: /sub/rep/flags files'
return 0
endif
let firstch= a:str[0]
let argidx=0
let arg0=''
let arg1=''
let argflags=''
let argfileglob=''
let idx=1
let str=a:str
while idx < strlen(str)
let ch=str[idx]
if ch=='\' && idx+1 < strlen(str) && str[idx+1] == firstch
let str=str[0:idx].str[idx+1:]
elseif ch==firstch
let arg{argidx}=str[1:idx-1]
let argidx+=1
let str=str[idx : ]
let idx=0
if argidx==2
break
endif
endif
let idx+=1
endwhile
if argidx == 2
"echo ' argidx=2'
let idx+=1
while idx < strlen(str)
if str[idx]=~'\s'
let idx+=1
break
endif
let argflags=argflags.str[idx]
let idx+=1
endwhile
let argfileglob=str[idx : ]
endif
exe 'call '.a:func.'( argfileglob, arg0, arg1, argflags)'
" call GlobSearchReplace( argfileglob, arg0, arg1, argflags)
endfun
com! -nargs=1 Gsub :call s:CallGlobReplace('GlobSearchReplace', <q-args>)
com! -nargs=1 Bsub :call s:CallGlobReplace('BufSearchReplace', <q-args>)