为了获得参数。我结束了通过创建分裂的论点,并把它们在变量b:list
功能GetArguments()
:
function! GetArguments()
let l:str=getline(".")
let l:str=substitute(l:str,'^\(\s\|\w\)*\("\|[\|(\|<\|{\)','','')
let l:str=substitute(l:str,'\("\|]\|)\|>\|}\)\s*\({\|;\)*\s*$','','')
let l:i=''
let l:oparen=0
let l:Arg=""
let b:list=[]
for l:i in split(l:str,'\zs')
if matchstr(l:i , '\("\|[\|(\|<\|{\)') != ''
let l:oparen+=1
elseif matchstr(l:i , '\("\|]\|)\|>\|}\)') != ''
let l:oparen-=1
endif
if matchstr(l:i, ',\|;') == ''
let l:Arg=l:Arg.l:i
elseif matchstr(l:i, ',\|;') != '' && l:oparen != 0
let l:Arg=l:Arg.l:i
elseif matchstr(l:i, ',\|;') != '' && l:oparen == 0
if strlen(l:Arg) != 0
call add(b:list,l:Arg)
endif
let l:Arg=""
endif
endfor
if strlen(l:Arg) != 0
call add(b:list,l:Arg)
endif
endfunction
我最终通过使我自己的功能终于来了! +1 –
@Meninx,您可能希望在帖子中分享您的功能,以帮助其他人也遇到类似问题 –
@Rincker这是一个简单的功能,它实际上做了我目前想要的,但需要改进! –