写了个Vim-Yii小插件
一直卡在如何在vim中用变量名作为tabnew的参数,google到https://github.com/vim-scripts/a.vim/blob/master/plugin/a.vim 这个插件,看了其中的代码,用execute命令
插件的作用是可以快速打开对应的model或controller
function! YiiGetMVC(arg)
let s:file=expand('%')
let s:dir=expand('%:h')
let s:filename=expand('%:t')
let l:arg1=strpart(a:arg,0,1)
let l:arg1=toupper(l:arg1)
let l:arg2=strpart(a:arg,1,strlen(a:arg)-1)
let l:arg1=l:arg1.l:arg2
let s:mvc=match(s:filename,'Controller\.php$')
if s:mvc!=-1
let l:tmps=match(s:dir,'\/controllers$')
let s:realdir=strpart(s:dir,-1,l:tmps+1).'/'.a:arg.'s/'
let s:name=strpart(s:filename,-1,s:mvc+1)
else
let s:mvc=match(s:file,'\/models\/'.s:filename.'$')
if s:mvc!=-1
let l:tmps=match(s:filename,'\.php$')
let s:realdir=strpart(s:dir,-1,s:mvc+1).'/'.a:arg.'s/'
let s:name=strpart(s:filename,-1,l:tmps+1)
else
let l:tmps=match(s:file,'\/views\/.*\/'.s:filename.'$')
let s:realdir=strpart(s:dir,-1,l:tmps+1).'/'.a:arg.'s/'
let s:name=strpart(s:dir,l:tmps+7,strlen(s:dir)-1)
endif
endif
if a:arg=='model'
let s:newfile=s:realdir.s:name.'.php'
endif
if a:arg=='controller'
let l:arg3=strpart(s:name,0,1)
let l:arg3=toupper(l:arg3)
let s:name=l:arg3.strpart(s:name,1)
let s:newfile=s:realdir.s:name.l:arg1.'.php'
endif
let v:errmsg=""
silent! execute ":tabnew ".s:newfile
if(v:errmsg!="")
echo v:errmsg
endif
endfunction