" Author: Michael Geddes ( vimmer at frog.wheelycreek.net ) " " Created for zimnyx on IRC " Version:0.2 " " Do a global search replace on a directory. " " " 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! s:CallGlobReplace(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 call GlobSearchReplace( argfileglob, arg0, arg1, argflags) endfun com! -nargs=1 Gsub :call s:CallGlobReplace()