写了个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
标签: vim, yii
添加新评论