+ 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
89 lines
2.1 KiB
VimL
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>)
|
|
|