扩展vim插件 - code_complete.vim

来源:互联网 发布:离婚率越来越高知乎 编辑:程序博客网 时间:2024/06/05 02:28

在凝霜扩展的基础上添加shell模板

凝霜扩展版:http://blog.csdn.net/mdl13412/article/details/8097457

code_complete官方Demo

> cat  ~/.vim/plugin/code_complete.vim
"==================================================
" File:         code_complete.vim
" Brief:        function parameter complete, code snippets, and much more.
" Author:       Mingbai <mbbill AT gmail DOT com>
" Last Change:  2009-06-09 00:09:03
" Version:      2.9
"
" 修改By:      凝霜
" 博客:       
http://blog.csdn.net/MDL13412
" 修改内容:    去掉if, for, while等结构()间的空格
"               对ife,switch加入数字参数,指定分支个数:ifeN,switchN,其中N为分支个数
"               加入命名空间选项
"               加入函数模板补全
" 修改By:      jim
" 修改内容:    添加Shell模板
"
" Install:      1. Put code_complete.vim to plugin
"                  directory.
"               2. Use the command below to create tags
"                  file including signature field.
"                  ctags -R --c-kinds=+p --fields=+S .
"
" Usage:
"           hotkey:
"               "<tab>" (default value of g:completekey)
"               Do all the jobs with this key, see
"           example:
"               press <tab> after function name and (
"                 foo ( <tab>
"               becomes:
"                 foo ( `<first param>`,`<second param>` )
"               press <tab> after code template
"                 if <tab>
"               becomes:
"                 if( `<...>` )
"                 {
"                     `<...>`
"                 }
"
"
"           variables:
"
"               g:completekey
"                   the key used to complete function
"                   parameters and key words.
"
"               g:rs, g:re
"                   region start and stop
"               you can change them as you like.
"
"               g:user_defined_snippets
"                   file name of user defined snippets.
"
"           key words:
"               see "templates" section.
"==================================================

if v:version < 700
    finish
endif

" Variable Definitions: {{{1
" options, define them as you like in vimrc:
if !exists("g:completekey")
    let g:completekey = "<tab>"   "hotkey
endif

if !exists("g:rs")
    let g:rs = '`<'    "region start
endif

if !exists("g:re")
    let g:re = '>`'    "region stop
endif

if !exists("g:user_defined_snippets")
    let g:user_defined_snippets = "$VIMRUNTIME/plugin/my_snippets.vim"
endif

" ----------------------------
let s:expanded = 0  "in case of inserting char after expand
let s:signature_list = []
let s:jumppos = -1
let s:doappend = 1

" Autocommands: {{{1
autocmd BufReadPost,BufNewFile * call CodeCompleteStart()

" Menus:
menu <silent>       &Tools.Code\ Complete\ Start          :call CodeCompleteStart()<CR>
menu <silent>       &Tools.Code\ Complete\ Stop           :call CodeCompleteStop()<CR>

" Function Definitions: {{{1

function! CodeCompleteStart()
    exec "silent! iunmap  <buffer> ".g:completekey
    exec "inoremap <buffer> ".g:completekey." <c-r>=CodeComplete()<cr><c-r>=SwitchRegion()<cr>"
endfunction

function! CodeCompleteStop()
    exec "silent! iunmap <buffer> ".g:completekey
endfunction

function! FunctionComplete(fun)
    let s:signature_list=[]
    let signature_word=[]
    let ftags=taglist("^".a:fun."$")
    if type(ftags)==type(0) || ((type(ftags)==type([])) && ftags==[])
        return ''
    endif
    let tmp=''
    for i in ftags
        if match(i.cmd,'^/\^.*\(\*'.a:fun.'\)\(.*\)\;\$/')>=0
            if match(i.cmd,'(\s*void\s*)')<0 && match(i.cmd,'(\s*)')<0
                    let tmp=substitute(i.cmd,'^/\^','','')
                    let tmp=substitute(tmp,'.*\(\*'.a:fun.'\)','','')
                    let tmp=substitute(tmp,'^[\){1}]','','')
                    let tmp=substitute(tmp,';\$\/;{1}','','')
                    let tmp=substitute(tmp,'\$\/','','')
                    let tmp=substitute(tmp,';','','')
                    let tmp=substitute(tmp,',',g:re.','.g:rs,'g')
                    let tmp=substitute(tmp,'(\(.*\))',g:rs.'\1'.g:re.')','g')
            else
                    let tmp=''
            endif
            if (tmp != '') && (index(signature_word,tmp) == -1)
                let signature_word+=[tmp]
                let item={}
                let item['word']=tmp
                let item['menu']=i.filename
                let s:signature_list+=[item]
            endif
        endif
        if has_key(i,'kind') && has_key(i,'name') && has_key(i,'signature')
            if (i.kind=='p' || i.kind=='f') && i.name==a:fun  " p is declare, f is definition
                if match(i.signature,'(\s*void\s*)')<0 && match(i.signature,'(\s*)')<0
                    let tmp=substitute(i.signature,',',g:re.','.g:rs,'g')
                    let tmp=substitute(tmp,'(\(.*\))',g:rs.'\1'.g:re.')','g')
                else
                    let tmp=''
                endif
                if (tmp != '') && (index(signature_word,tmp) == -1)
                    let signature_word+=[tmp]
                    let item={}
                    let item['word']=tmp
                    let item['menu']=i.filename
                    let s:signature_list+=[item]
                endif
            endif
        endif
    endfor
    if s:signature_list==[]
        return ')'
    endif
    if len(s:signature_list)==1
        return s:signature_list[0]['word']
    else
        call  complete(col('.'),s:signature_list)
        return ''
    endif
endfunction

function! ExpandTemplate(cword)
    "let cword = substitute(getline('.')[:(col('.')-2)],'\zs.*\W\ze\w*$','','g')
    if has_key(g:template,&ft)
        if has_key(g:template[&ft],a:cword)
            let s:jumppos = line('.')
            return "\<c-w>" . g:template[&ft][a:cword]
        endif
    endif
    if has_key(g:template['_'],a:cword)
        let s:jumppos = line('.')
        return "\<c-w>" . g:template['_'][a:cword]
    endif
    return ''
endfunction

function! SwitchRegion()
    if len(s:signature_list)>1
        let s:signature_list=[]
        return ''
    endif
    if s:jumppos != -1
        call cursor(s:jumppos,0)
        let s:jumppos = -1
    endif
    if match(getline('.'),g:rs.'.*'.g:re)!=-1 || search(g:rs.'.\{-}'.g:re)!=0
        normal 0
        call search(g:rs,'c',line('.'))
        normal v
        call search(g:re,'e',line('.'))
        if &selection == "exclusive"
            exec "norm l"
        endif
        return "\<c-\>\<c-n>gvo\<c-g>"
    else
        if s:doappend == 1
            if g:completekey == "<tab>"
                return "\<tab>"
            endif
        endif
        return ''
    endif
endfunction

function! CodeComplete()
    let s:doappend = 1
    let function_name = matchstr(getline('.')[:(col('.')-2)],'\zs\w*\ze\s*(\s*$')
    if function_name != ''
        let funcres = FunctionComplete(function_name)
        if funcres != ''
            let s:doappend = 0
        endif
        return funcres
    else
        let template_name = substitute(getline('.')[:(col('.')-2)],'\zs.*\W\ze\w*$','','g')
        let tempres = ExpandTemplate(template_name)
        if tempres != ''
            let s:doappend = 0
        endif
        return tempres
    endif
endfunction


" [Get converted file name like __THIS_FILE__ ]
function! GetFileName()
    let filename=expand("%:t")
    let filename=toupper(filename)
    let _name=substitute(filename,'\.','_',"g")
    "let _name="__"._name."__"
    return _name
endfunction

" Templates: {{{1
" to add templates for new file type, see below
"
" "some new file type
" let g:template['newft'] = {}
" let g:template['newft']['keyword'] = "some abbrevation"
" let g:template['newft']['anotherkeyword'] = "another abbrevation"
" ...
"
" ---------------------------------------------
" C templates
let g:template = {}
let g:template['c'] = {}
let g:template['c']['cc'] = "/*  */\<left>\<left>\<left>"
let g:template['c']['cd'] = "/**<  */\<left>\<left>\<left>"
let g:template['c']['de'] = "#define     "
let g:template['c']['in'] = "#include \"\"\<left>"
let g:template['c']['is'] = "#include <>\<left>"
let g:template['c']['ff'] = "#ifndef  \<c-r>=GetFileName()\<cr>\<CR>#define  \<c-r>=GetFileName()\<cr>".
            \repeat("\<cr>",5)."#endif  // \<c-r>=GetFileName()\<cr>".repeat("\<up>",3)
let g:template['c']['for'] = "for (".g:rs."...".g:re."; ".g:rs."...".g:re."; ".g:rs."...".g:re.")\<cr>{\<cr>".
            \g:rs."...".g:re."\<cr>}\<cr>"
let g:template['c']['main'] = "int main(int argc, char \*argv\[\])\<cr>{\<cr>".g:rs."...".g:re."\<cr>}"

"switch模板
let g:template['c']['switch'] = "switch (".g:rs."...".g:re.")\<cr>{\<cr>case ".g:rs."...".g:re.":\<cr>break;\<cr>case ".
            \g:rs."...".g:re.":\<cr>break;\<cr>default:\<cr>break;\<cr>}"
let g:template['c']['switch1'] = "switch (".g:rs."...".g:re.")\<cr>{\<cr>case ".
            \g:rs."...".g:re.":\<cr>break;".
            \"\<cr>default:\<cr>break;\<cr>}"
let g:template['c']['switch2'] = "switch (".g:rs."...".g:re.")\<cr>{\<cr>case ".
            \g:rs."...".g:re.":\<cr>break;".
            \"\<cr>case ".g:rs."...".g:re.":\<cr>break;".
            \"\<cr>default:\<cr>break;\<cr>}"
let g:template['c']['switch3'] = "switch (".g:rs."...".g:re.")\<cr>{\<cr>case ".
            \g:rs."...".g:re.":\<cr>break;".
            \"\<cr>case ".g:rs."...".g:re.":\<cr>break;".
            \"\<cr>case ".g:rs."...".g:re.":\<cr>break;".
            \"\<cr>default:\<cr>break;\<cr>}"
let g:template['c']['switch4'] = "switch (".g:rs."...".g:re.")\<cr>{\<cr>case ".
            \g:rs."...".g:re.":\<cr>break;".
            \"\<cr>case ".g:rs."...".g:re.":\<cr>break;".
            \"\<cr>case ".g:rs."...".g:re.":\<cr>break;".
            \"\<cr>case ".g:rs."...".g:re.":\<cr>break;".
            \"\<cr>default:\<cr>break;\<cr>}"
let g:template['c']['switch5'] = "switch (".g:rs."...".g:re.")\<cr>{\<cr>case ".
            \g:rs."...".g:re.":\<cr>break;".
            \"\<cr>case ".g:rs."...".g:re.":\<cr>break;".
            \"\<cr>case ".g:rs."...".g:re.":\<cr>break;".
            \"\<cr>case ".g:rs."...".g:re.":\<cr>break;".
            \"\<cr>case ".g:rs."...".g:re.":\<cr>break;".
            \"\<cr>default:\<cr>break;\<cr>}"
let g:template['c']['switch6'] = "switch (".g:rs."...".g:re.")\<cr>{\<cr>case ".
            \g:rs."...".g:re.":\<cr>break;".
            \"\<cr>case ".g:rs."...".g:re.":\<cr>break;".
            \"\<cr>case ".g:rs."...".g:re.":\<cr>break;".
            \"\<cr>case ".g:rs."...".g:re.":\<cr>break;".
            \"\<cr>case ".g:rs."...".g:re.":\<cr>break;".
            \"\<cr>case ".g:rs."...".g:re.":\<cr>break;".
            \"\<cr>default:\<cr>break;\<cr>}"
let g:template['c']['switch7'] = "switch (".g:rs."...".g:re.")\<cr>{\<cr>case ".
            \g:rs."...".g:re.":\<cr>break;".
            \"\<cr>case ".g:rs."...".g:re.":\<cr>break;".
            \"\<cr>case ".g:rs."...".g:re.":\<cr>break;".
            \"\<cr>case ".g:rs."...".g:re.":\<cr>break;".
            \"\<cr>case ".g:rs."...".g:re.":\<cr>break;".
            \"\<cr>case ".g:rs."...".g:re.":\<cr>break;".
            \"\<cr>case ".g:rs."...".g:re.":\<cr>break;".
            \"\<cr>default:\<cr>break;\<cr>}"
let g:template['c']['switch8'] = "switch (".g:rs."...".g:re.")\<cr>{\<cr>case ".
            \g:rs."...".g:re.":\<cr>break;".
            \"\<cr>case ".g:rs."...".g:re.":\<cr>break;".
            \"\<cr>case ".g:rs."...".g:re.":\<cr>break;".
            \"\<cr>case ".g:rs."...".g:re.":\<cr>break;".
            \"\<cr>case ".g:rs."...".g:re.":\<cr>break;".
            \"\<cr>case ".g:rs."...".g:re.":\<cr>break;".
            \"\<cr>case ".g:rs."...".g:re.":\<cr>break;".
            \"\<cr>case ".g:rs."...".g:re.":\<cr>break;".
            \"\<cr>default:\<cr>break;\<cr>}"
let g:template['c']['switch9'] = "switch (".g:rs."...".g:re.")\<cr>{\<cr>case ".
            \g:rs."...".g:re.":\<cr>break;".
            \"\<cr>case ".g:rs."...".g:re.":\<cr>break;".
            \"\<cr>case ".g:rs."...".g:re.":\<cr>break;".
            \"\<cr>case ".g:rs."...".g:re.":\<cr>break;".
            \"\<cr>case ".g:rs."...".g:re.":\<cr>break;".
            \"\<cr>case ".g:rs."...".g:re.":\<cr>break;".
            \"\<cr>case ".g:rs."...".g:re.":\<cr>break;".
            \"\<cr>case ".g:rs."...".g:re.":\<cr>break;".
            \"\<cr>case ".g:rs."...".g:re.":\<cr>break;".
            \"\<cr>default:\<cr>break;\<cr>}"

"
let g:template['c']['if'] = "if (".g:rs."...".g:re.")\<cr>{\<cr>".g:rs."...".g:re."\<cr>}"
let g:template['c']['while'] = "while(".g:rs."...".g:re.")\<cr>{\<cr>".g:rs."...".g:re."\<cr>}"

let g:template['c']['ife'] = "if (".g:rs."...".g:re.")\<cr>{\<cr>".g:rs."...".g:re."\<cr>} else\<cr>{\<cr>".g:rs."...".
            \g:re."\<cr>}"
let g:template['c']['ife0'] = "if (".g:rs."...".g:re.")\<cr>{\<cr>".g:rs."...".g:re."\<cr>} else\<cr>{\<cr>".g:rs."...".
            \g:re."\<cr>}"
let g:template['c']['ife1'] = "if (".g:rs."...".g:re.")\<cr>{\<cr>".g:rs."...".g:re."\<cr>} ".
            \"else if (".g:rs."...".g:re.")\<cr>{\<cr>".g:rs."...".g:re."\<cr>} ".
            \"else\<cr>{\<cr>".g:rs."...".
            \g:re."\<cr>}"
let g:template['c']['ife2'] = "if (".g:rs."...".g:re.")\<cr>{\<cr>".g:rs."...".g:re."\<cr>} ".
            \"else if (".g:rs."...".g:re.")\<cr>{\<cr>".g:rs."...".g:re."\<cr>} ".
            \"else if (".g:rs."...".g:re.")\<cr>{\<cr>".g:rs."...".g:re."\<cr>} ".
            \"else\<cr>{\<cr>".g:rs."...".
            \g:re."\<cr>}"
let g:template['c']['ife3'] = "if (".g:rs."...".g:re.")\<cr>{\<cr>".g:rs."...".g:re."\<cr>} ".
            \"else if (".g:rs."...".g:re.")\<cr>{\<cr>".g:rs."...".g:re."\<cr>} ".
            \"else if (".g:rs."...".g:re.")\<cr>{\<cr>".g:rs."...".g:re."\<cr>} ".
            \"else if (".g:rs."...".g:re.")\<cr>{\<cr>".g:rs."...".g:re."\<cr>} ".
            \"else\<cr>{\<cr>".g:rs."...".
            \g:re."\<cr>}"
let g:template['c']['ife4'] = "if (".g:rs."...".g:re.")\<cr>{\<cr>".g:rs."...".g:re."\<cr>} ".
            \"else if (".g:rs."...".g:re.")\<cr>{\<cr>".g:rs."...".g:re."\<cr>} ".
            \"else if (".g:rs."...".g:re.")\<cr>{\<cr>".g:rs."...".g:re."\<cr>} ".
            \"else if (".g:rs."...".g:re.")\<cr>{\<cr>".g:rs."...".g:re."\<cr>} ".
            \"else if (".g:rs."...".g:re.")\<cr>{\<cr>".g:rs."...".g:re."\<cr>} ".
            \"else\<cr>{\<cr>".g:rs."...".
            \g:re."\<cr>}"
let g:template['c']['ife5'] = "if (".g:rs."...".g:re.")\<cr>{\<cr>".g:rs."...".g:re."\<cr>} ".
            \"else if (".g:rs."...".g:re.")\<cr>{\<cr>".g:rs."...".g:re."\<cr>} ".
            \"else if (".g:rs."...".g:re.")\<cr>{\<cr>".g:rs."...".g:re."\<cr>} ".
            \"else if (".g:rs."...".g:re.")\<cr>{\<cr>".g:rs."...".g:re."\<cr>} ".
            \"else if (".g:rs."...".g:re.")\<cr>{\<cr>".g:rs."...".g:re."\<cr>} ".
            \"else if (".g:rs."...".g:re.")\<cr>{\<cr>".g:rs."...".g:re."\<cr>} ".
            \"else\<cr>{\<cr>".g:rs."...".
            \g:re."\<cr>}"
let g:template['c']['ife6'] = "if (".g:rs."...".g:re.")\<cr>{\<cr>".g:rs."...".g:re."\<cr>} ".
            \"else if (".g:rs."...".g:re.")\<cr>{\<cr>".g:rs."...".g:re."\<cr>} ".
            \"else if (".g:rs."...".g:re.")\<cr>{\<cr>".g:rs."...".g:re."\<cr>} ".
            \"else if (".g:rs."...".g:re.")\<cr>{\<cr>".g:rs."...".g:re."\<cr>} ".
            \"else if (".g:rs."...".g:re.")\<cr>{\<cr>".g:rs."...".g:re."\<cr>} ".
            \"else if (".g:rs."...".g:re.")\<cr>{\<cr>".g:rs."...".g:re."\<cr>} ".
            \"else if (".g:rs."...".g:re.")\<cr>{\<cr>".g:rs."...".g:re."\<cr>} ".
            \"else\<cr>{\<cr>".g:rs."...".
            \g:re."\<cr>}"
let g:template['c']['ife7'] = "if (".g:rs."...".g:re.")\<cr>{\<cr>".g:rs."...".g:re."\<cr>} ".
            \"else if (".g:rs."...".g:re.")\<cr>{\<cr>".g:rs."...".g:re."\<cr>} ".
            \"else if (".g:rs."...".g:re.")\<cr>{\<cr>".g:rs."...".g:re."\<cr>} ".
            \"else if (".g:rs."...".g:re.")\<cr>{\<cr>".g:rs."...".g:re."\<cr>} ".
            \"else if (".g:rs."...".g:re.")\<cr>{\<cr>".g:rs."...".g:re."\<cr>} ".
            \"else if (".g:rs."...".g:re.")\<cr>{\<cr>".g:rs."...".g:re."\<cr>} ".
            \"else if (".g:rs."...".g:re.")\<cr>{\<cr>".g:rs."...".g:re."\<cr>} ".
            \"else if (".g:rs."...".g:re.")\<cr>{\<cr>".g:rs."...".g:re."\<cr>} ".
            \"else\<cr>{\<cr>".g:rs."...".
            \g:re."\<cr>}"
let g:template['c']['ife8'] = "if (".g:rs."...".g:re.")\<cr>{\<cr>".g:rs."...".g:re."\<cr>} ".
            \"else if (".g:rs."...".g:re.")\<cr>{\<cr>".g:rs."...".g:re."\<cr>} ".
            \"else if (".g:rs."...".g:re.")\<cr>{\<cr>".g:rs."...".g:re."\<cr>} ".
            \"else if (".g:rs."...".g:re.")\<cr>{\<cr>".g:rs."...".g:re."\<cr>} ".
            \"else if (".g:rs."...".g:re.")\<cr>{\<cr>".g:rs."...".g:re."\<cr>} ".
            \"else if (".g:rs."...".g:re.")\<cr>{\<cr>".g:rs."...".g:re."\<cr>} ".
            \"else if (".g:rs."...".g:re.")\<cr>{\<cr>".g:rs."...".g:re."\<cr>} ".
            \"else if (".g:rs."...".g:re.")\<cr>{\<cr>".g:rs."...".g:re."\<cr>} ".
            \"else if (".g:rs."...".g:re.")\<cr>{\<cr>".g:rs."...".g:re."\<cr>} ".
            \"else\<cr>{\<cr>".g:rs."...".
            \g:re."\<cr>}"
let g:template['c']['ife9'] = "if (".g:rs."...".g:re.")\<cr>{\<cr>".g:rs."...".g:re."\<cr>} ".
            \"else if (".g:rs."...".g:re.")\<cr>{\<cr>".g:rs."...".g:re."\<cr>} ".
            \"else if (".g:rs."...".g:re.")\<cr>{\<cr>".g:rs."...".g:re."\<cr>} ".
            \"else if (".g:rs."...".g:re.")\<cr>{\<cr>".g:rs."...".g:re."\<cr>} ".
            \"else if (".g:rs."...".g:re.")\<cr>{\<cr>".g:rs."...".g:re."\<cr>} ".
            \"else if (".g:rs."...".g:re.")\<cr>{\<cr>".g:rs."...".g:re."\<cr>} ".
            \"else if (".g:rs."...".g:re.")\<cr>{\<cr>".g:rs."...".g:re."\<cr>} ".
            \"else if (".g:rs."...".g:re.")\<cr>{\<cr>".g:rs."...".g:re."\<cr>} ".
            \"else if (".g:rs."...".g:re.")\<cr>{\<cr>".g:rs."...".g:re."\<cr>} ".
            \"else if (".g:rs."...".g:re.")\<cr>{\<cr>".g:rs."...".g:re."\<cr>} ".
            \"else\<cr>{\<cr>".g:rs."...".
            \g:re."\<cr>}"

"作用域
let g:template['c']['nm']="namespace ".g:rs."...".g:re."\<cr>{\<cr>".g:rs."...".g:re."\<cr>}"
let g:template['c']['ns']="namespace NsLib\<cr>{\<cr>".g:rs."...".g:re."\<cr>}"

"函数模板
let g:template['c']['f0']=g:rs."...".g:re."()\<cr>{\<cr>".g:rs."...".g:re."\<cr>}"
let g:template['c']['f1']=g:rs."...".g:re."(".g:rs."...".g:re.")\<cr>{\<cr>".g:rs."...".g:re."\<cr>}"
let g:template['c']['f2']=g:rs."...".g:re."(".g:rs."...".g:re.", ".g:rs."...".g:re.")\<cr>{\<cr>".g:rs."...".g:re."\<cr>}"
let g:template['c']['f3']=g:rs."...".g:re."(".g:rs."...".g:re.", ".g:rs."...".g:re.", ".g:rs."...".g:re.")\<cr>{\<cr>".g:rs."...".g:re."\<cr>}"
let g:template['c']['f4']=g:rs."...".g:re."(".g:rs."...".g:re.", ".g:rs."...".g:re.", ".g:rs."...".g:re.", ".g:rs."...".g:re.")\<cr>{\<cr>".g:rs."...".g:re."\<cr>}"
let g:template['c']['f5']=g:rs."...".g:re."(".g:rs."...".g:re.", ".g:rs."...".g:re.", ".g:rs."...".g:re.", ".g:rs."...".g:re.", ".g:rs."...".g:re.")\<cr>{\<cr>".g:rs."...".g:re."\<cr>}"
let g:template['c']['f6']=g:rs."...".g:re."(".g:rs."...".g:re.", ".g:rs."...".g:re.", ".g:rs."...".g:re.", ".g:rs."...".g:re.", ".g:rs."...".g:re.", ".g:rs."...".g:re.")\<cr>{\<cr>".g:rs."...".g:re."\<cr>}"
let g:template['c']['f7']=g:rs."...".g:re."(".g:rs."...".g:re.", ".g:rs."...".g:re.", ".g:rs."...".g:re.", ".g:rs."...".g:re.", ".g:rs."...".g:re.", ".g:rs."...".g:re.", ".g:rs."...".g:re.")\<cr>{\<cr>".g:rs."...".g:re."\<cr>}"
let g:template['c']['f8']=g:rs."...".g:re."(".g:rs."...".g:re.", ".g:rs."...".g:re.", ".g:rs."...".g:re.", ".g:rs."...".g:re.", ".g:rs."...".g:re.", ".g:rs."...".g:re.", ".g:rs."...".g:re.", ".g:rs."...".g:re.")\<cr>{\<cr>".g:rs."...".g:re."\<cr>}"
let g:template['c']['f9']=g:rs."...".g:re."(".g:rs."...".g:re.", ".g:rs."...".g:re.", ".g:rs."...".g:re.", ".g:rs."...".g:re.", ".g:rs."...".g:re.", ".g:rs."...".g:re.", ".g:rs."...".g:re.", ".g:rs."...".g:re.", ".g:rs."...".g:re.")\<cr>{\<cr>".g:rs."...".g:re."\<cr>}"

let g:template['c']['class']="class ".g:rs."...".g:re."\<cr>{\<cr>public:\<cr>".g:rs."...".g:re."\<cr>\<cr>};"
let g:template['c']['const']="const ".g:rs."...".g:re." = ".g:rs."...".g:re.";"

" ---------------------------------------------
" C++ templates
let g:template['cpp'] = g:template['c']

" ---------------------------------------------
" Shell templates
let g:template['sh'] = {}
let g:template['sh']['sh'] = "#!/bin/sh\<cr>".g:rs."...".g:re."\<cr>exit 0"
let g:template['sh']['sx'] = "#!/bin/sh -x\<cr>".g:rs."...".g:re."\<cr>exit 0"
let g:template['sh']['ba'] = "#!/bin/bash\<cr>".g:rs."...".g:re."\<cr>exit 0"
let g:template['sh']['bx'] = "#!/bin/bash -x\<cr>".g:rs."...".g:re."\<cr>exit 0"
let g:template['sh']['cc'] = "#  \<left>"
let g:template['sh']['ff'] = "function ".g:rs."...".g:re." ()\<cr>{\<cr>".g:rs."...".g:re."\<cr>}"
let g:template['sh']['if'] = "if [ ".g:rs."...".g:re." ]; then\<cr>".g:rs."...".g:re."\<cr>fi"
let g:template['sh']['ife'] = "if [ ".g:rs."...".g:re." ]; then\<cr>".g:rs."...".g:re."\<cr>else\<cr>".g:rs."...".g:re."\<cr>fi"
let g:template['sh']['ife1'] = "if [ ".g:rs."...".g:re." ]; then\<cr>".g:rs."...".g:re."\<cr>".
            \"elif [ ".g:rs."...".g:re." ]; then\<cr>".g:rs."...".g:re."\<cr>".
            \"fi"
let g:template['sh']['ife2'] = "if [ ".g:rs."...".g:re." ]; then\<cr>".g:rs."...".g:re."\<cr>".
            \"elif [ ".g:rs."...".g:re." ]; then\<cr>".g:rs."...".g:re."\<cr>".
            \"elif [ ".g:rs."...".g:re." ]; then\<cr>".g:rs."...".g:re."\<cr>".
            \"fi"
let g:template['sh']['ife3'] = "if [ ".g:rs."...".g:re." ]; then\<cr>".g:rs."...".g:re."\<cr>".
            \"elif [ ".g:rs."...".g:re." ]; then\<cr>".g:rs."...".g:re."\<cr>".
            \"elif [ ".g:rs."...".g:re." ]; then\<cr>".g:rs."...".g:re."\<cr>".
            \"elif [ ".g:rs."...".g:re." ]; then\<cr>".g:rs."...".g:re."\<cr>".
            \"fi"
let g:template['sh']['ife4'] = "if [ ".g:rs."...".g:re." ]; then\<cr>".g:rs."...".g:re."\<cr>".
            \"elif [ ".g:rs."...".g:re." ]; then\<cr>".g:rs."...".g:re."\<cr>".
            \"elif [ ".g:rs."...".g:re." ]; then\<cr>".g:rs."...".g:re."\<cr>".
            \"elif [ ".g:rs."...".g:re." ]; then\<cr>".g:rs."...".g:re."\<cr>".
            \"elif [ ".g:rs."...".g:re." ]; then\<cr>".g:rs."...".g:re."\<cr>".
            \"fi"
let g:template['sh']['ife5'] = "if [ ".g:rs."...".g:re." ]; then\<cr>".g:rs."...".g:re."\<cr>".
            \"elif [ ".g:rs."...".g:re." ]; then\<cr>".g:rs."...".g:re."\<cr>".
            \"elif [ ".g:rs."...".g:re." ]; then\<cr>".g:rs."...".g:re."\<cr>".
            \"elif [ ".g:rs."...".g:re." ]; then\<cr>".g:rs."...".g:re."\<cr>".
            \"elif [ ".g:rs."...".g:re." ]; then\<cr>".g:rs."...".g:re."\<cr>".
            \"elif [ ".g:rs."...".g:re." ]; then\<cr>".g:rs."...".g:re."\<cr>".
            \"fi"
let g:template['sh']['ife6'] = "if [ ".g:rs."...".g:re." ]; then\<cr>".g:rs."...".g:re."\<cr>".
            \"elif [ ".g:rs."...".g:re." ]; then\<cr>".g:rs."...".g:re."\<cr>".
            \"elif [ ".g:rs."...".g:re." ]; then\<cr>".g:rs."...".g:re."\<cr>".
            \"elif [ ".g:rs."...".g:re." ]; then\<cr>".g:rs."...".g:re."\<cr>".
            \"elif [ ".g:rs."...".g:re." ]; then\<cr>".g:rs."...".g:re."\<cr>".
            \"elif [ ".g:rs."...".g:re." ]; then\<cr>".g:rs."...".g:re."\<cr>".
            \"elif [ ".g:rs."...".g:re." ]; then\<cr>".g:rs."...".g:re."\<cr>".
            \"fi"
let g:template['sh']['ife7'] = "if [ ".g:rs."...".g:re." ]; then\<cr>".g:rs."...".g:re."\<cr>".
            \"elif [ ".g:rs."...".g:re." ]; then\<cr>".g:rs."...".g:re."\<cr>".
            \"elif [ ".g:rs."...".g:re." ]; then\<cr>".g:rs."...".g:re."\<cr>".
            \"elif [ ".g:rs."...".g:re." ]; then\<cr>".g:rs."...".g:re."\<cr>".
            \"elif [ ".g:rs."...".g:re." ]; then\<cr>".g:rs."...".g:re."\<cr>".
            \"elif [ ".g:rs."...".g:re." ]; then\<cr>".g:rs."...".g:re."\<cr>".
            \"elif [ ".g:rs."...".g:re." ]; then\<cr>".g:rs."...".g:re."\<cr>".
            \"elif [ ".g:rs."...".g:re." ]; then\<cr>".g:rs."...".g:re."\<cr>".
            \"fi"
let g:template['sh']['ife8'] = "if [ ".g:rs."...".g:re." ]; then\<cr>".g:rs."...".g:re."\<cr>".
            \"elif [ ".g:rs."...".g:re." ]; then\<cr>".g:rs."...".g:re."\<cr>".
            \"elif [ ".g:rs."...".g:re." ]; then\<cr>".g:rs."...".g:re."\<cr>".
            \"elif [ ".g:rs."...".g:re." ]; then\<cr>".g:rs."...".g:re."\<cr>".
            \"elif [ ".g:rs."...".g:re." ]; then\<cr>".g:rs."...".g:re."\<cr>".
            \"elif [ ".g:rs."...".g:re." ]; then\<cr>".g:rs."...".g:re."\<cr>".
            \"elif [ ".g:rs."...".g:re." ]; then\<cr>".g:rs."...".g:re."\<cr>".
            \"elif [ ".g:rs."...".g:re." ]; then\<cr>".g:rs."...".g:re."\<cr>".
            \"elif [ ".g:rs."...".g:re." ]; then\<cr>".g:rs."...".g:re."\<cr>".
            \"fi"
let g:template['sh']['ife9'] = "if [ ".g:rs."...".g:re." ]; then\<cr>".g:rs."...".g:re."\<cr>".
            \"elif [ ".g:rs."...".g:re." ]; then\<cr>".g:rs."...".g:re."\<cr>".
            \"elif [ ".g:rs."...".g:re." ]; then\<cr>".g:rs."...".g:re."\<cr>".
            \"elif [ ".g:rs."...".g:re." ]; then\<cr>".g:rs."...".g:re."\<cr>".
            \"elif [ ".g:rs."...".g:re." ]; then\<cr>".g:rs."...".g:re."\<cr>".
            \"elif [ ".g:rs."...".g:re." ]; then\<cr>".g:rs."...".g:re."\<cr>".
            \"elif [ ".g:rs."...".g:re." ]; then\<cr>".g:rs."...".g:re."\<cr>".
            \"elif [ ".g:rs."...".g:re." ]; then\<cr>".g:rs."...".g:re."\<cr>".
            \"elif [ ".g:rs."...".g:re." ]; then\<cr>".g:rs."...".g:re."\<cr>".
            \"elif [ ".g:rs."...".g:re." ]; then\<cr>".g:rs."...".g:re."\<cr>".
            \"fi"
let g:template['sh']['case'] = "case i in ".g:rs."...".g:re."\<cr>".
            \g:rs."...".g:re.")\<cr>".g:rs."...".g:re."\<cr>;;\<cr>".
            \"*)\<cr>".g:rs."...".g:re."\<cr>;;\<cr>esac"
let g:template['sh']['case2'] = "case i in ".g:rs."...".g:re."\<cr>".
            \g:rs."...".g:re.")\<cr>".g:rs."...".g:re."\<cr>;;\<cr>".
            \g:rs."...".g:re.")\<cr>".g:rs."...".g:re."\<cr>;;\<cr>".
            \"*)\<cr>".g:rs."...".g:re."\<cr>;;\<cr>esac"
let g:template['sh']['case3'] = "case i in ".g:rs."...".g:re."\<cr>".
            \g:rs."...".g:re.")\<cr>".g:rs."...".g:re."\<cr>;;\<cr>".
            \g:rs."...".g:re.")\<cr>".g:rs."...".g:re."\<cr>;;\<cr>".
            \g:rs."...".g:re.")\<cr>".g:rs."...".g:re."\<cr>;;\<cr>".
            \"*)\<cr>".g:rs."...".g:re."\<cr>;;\<cr>esac"
let g:template['sh']['case4'] = "case i in ".g:rs."...".g:re."\<cr>".
            \g:rs."...".g:re.")\<cr>".g:rs."...".g:re."\<cr>;;\<cr>".
            \g:rs."...".g:re.")\<cr>".g:rs."...".g:re."\<cr>;;\<cr>".
            \g:rs."...".g:re.")\<cr>".g:rs."...".g:re."\<cr>;;\<cr>".
            \g:rs."...".g:re.")\<cr>".g:rs."...".g:re."\<cr>;;\<cr>".
            \"*)\<cr>".g:rs."...".g:re."\<cr>;;\<cr>esac"
let g:template['sh']['case5'] = "case i in ".g:rs."...".g:re."\<cr>".
            \g:rs."...".g:re.")\<cr>".g:rs."...".g:re."\<cr>;;\<cr>".
            \g:rs."...".g:re.")\<cr>".g:rs."...".g:re."\<cr>;;\<cr>".
            \g:rs."...".g:re.")\<cr>".g:rs."...".g:re."\<cr>;;\<cr>".
            \g:rs."...".g:re.")\<cr>".g:rs."...".g:re."\<cr>;;\<cr>".
            \g:rs."...".g:re.")\<cr>".g:rs."...".g:re."\<cr>;;\<cr>".
            \"*)\<cr>".g:rs."...".g:re."\<cr>;;\<cr>esac"
let g:template['sh']['case6'] = "case i in ".g:rs."...".g:re."\<cr>".
            \g:rs."...".g:re.")\<cr>".g:rs."...".g:re."\<cr>;;\<cr>".
            \g:rs."...".g:re.")\<cr>".g:rs."...".g:re."\<cr>;;\<cr>".
            \g:rs."...".g:re.")\<cr>".g:rs."...".g:re."\<cr>;;\<cr>".
            \g:rs."...".g:re.")\<cr>".g:rs."...".g:re."\<cr>;;\<cr>".
            \g:rs."...".g:re.")\<cr>".g:rs."...".g:re."\<cr>;;\<cr>".
            \g:rs."...".g:re.")\<cr>".g:rs."...".g:re."\<cr>;;\<cr>".
            \"*)\<cr>".g:rs."...".g:re."\<cr>;;\<cr>esac"
let g:template['sh']['case7'] = "case i in ".g:rs."...".g:re."\<cr>".
            \g:rs."...".g:re.")\<cr>".g:rs."...".g:re."\<cr>;;\<cr>".
            \g:rs."...".g:re.")\<cr>".g:rs."...".g:re."\<cr>;;\<cr>".
            \g:rs."...".g:re.")\<cr>".g:rs."...".g:re."\<cr>;;\<cr>".
            \g:rs."...".g:re.")\<cr>".g:rs."...".g:re."\<cr>;;\<cr>".
            \g:rs."...".g:re.")\<cr>".g:rs."...".g:re."\<cr>;;\<cr>".
            \g:rs."...".g:re.")\<cr>".g:rs."...".g:re."\<cr>;;\<cr>".
            \g:rs."...".g:re.")\<cr>".g:rs."...".g:re."\<cr>;;\<cr>".
            \"*)\<cr>".g:rs."...".g:re."\<cr>;;\<cr>esac"
let g:template['sh']['case8'] = "case i in ".g:rs."...".g:re."\<cr>".
            \g:rs."...".g:re.")\<cr>".g:rs."...".g:re."\<cr>;;\<cr>".
            \g:rs."...".g:re.")\<cr>".g:rs."...".g:re."\<cr>;;\<cr>".
            \g:rs."...".g:re.")\<cr>".g:rs."...".g:re."\<cr>;;\<cr>".
            \g:rs."...".g:re.")\<cr>".g:rs."...".g:re."\<cr>;;\<cr>".
            \g:rs."...".g:re.")\<cr>".g:rs."...".g:re."\<cr>;;\<cr>".
            \g:rs."...".g:re.")\<cr>".g:rs."...".g:re."\<cr>;;\<cr>".
            \g:rs."...".g:re.")\<cr>".g:rs."...".g:re."\<cr>;;\<cr>".
            \g:rs."...".g:re.")\<cr>".g:rs."...".g:re."\<cr>;;\<cr>".
            \"*)\<cr>".g:rs."...".g:re."\<cr>;;\<cr>esac"
let g:template['sh']['case9'] = "case i in ".g:rs."...".g:re."\<cr>".
            \g:rs."...".g:re.")\<cr>".g:rs."...".g:re."\<cr>;;\<cr>".
            \g:rs."...".g:re.")\<cr>".g:rs."...".g:re."\<cr>;;\<cr>".
            \g:rs."...".g:re.")\<cr>".g:rs."...".g:re."\<cr>;;\<cr>".
            \g:rs."...".g:re.")\<cr>".g:rs."...".g:re."\<cr>;;\<cr>".
            \g:rs."...".g:re.")\<cr>".g:rs."...".g:re."\<cr>;;\<cr>".
            \g:rs."...".g:re.")\<cr>".g:rs."...".g:re."\<cr>;;\<cr>".
            \g:rs."...".g:re.")\<cr>".g:rs."...".g:re."\<cr>;;\<cr>".
            \g:rs."...".g:re.")\<cr>".g:rs."...".g:re."\<cr>;;\<cr>".
            \g:rs."...".g:re.")\<cr>".g:rs."...".g:re."\<cr>;;\<cr>".
            \"*)\<cr>".g:rs."...".g:re."\<cr>;;\<cr>esac"
let g:template['sh']['while'] = "while [ ".g:rs."...".g:re." ]\<cr>do\<cr>".g:rs."...".g:re."\<cr>done\<cr>"
let g:template['sh']['select'] = "select i in ".g:rs."...".g:re."\<cr>do\<cr>case ${i} in ".g:rs."...".g:re."\<cr>".
            \g:rs."...".g:re.")\<cr>".g:rs."...".g:re."\<cr>;;\<cr>".
            \"*)\<cr>".g:rs."...".g:re."\<cr>;;\<cr>esac\<cr>done"
" ---------------------------------------------
" common templates
let g:template['_'] = {}
let g:template['_']['xt'] = "\<c-r>=strftime(\"%Y-%m-%d %H:%M:%S\")\<cr>"

" ---------------------------------------------
" load user defined snippets
exec "silent! runtime ".g:user_defined_snippets


" vim: set fdm=marker et :

 

以上插件下载地址:http://download.csdn.net/detail/diy534/4808108


原创粉丝点击