vim SetComment自动注释

" 当新建 .py .sh .md等文件时自动调用SetComment 函数
autocmd BufNewFile *.py  exec ":call SetCommentPy()"
autocmd BufNewFile *.sh  exec ":call SetComment_sh()"
autocmd BufNewFile *.md  exec ":call SetComment_md()"

func SetCommentPy()
    call setline(1,          "#!/usr/bin/env python")
    call append(line("."),   "# coding=utf8")
    call append(line(".")+1, "# ===============================================================================")
    call append(line(".")+2, "#   Copyright (C) ".strftime("%Y")." www.361way.com site All rights reserved.")
    call append(line(".")+3, "#   ")
    call append(line(".")+4, "#   Filename      :".expand("%:t"))
    call append(line(".")+5, "#   Author        :yangbk <itybku@139.com>")
    call append(line(".")+6, "#   Create Time   :".strftime("%Y-%m-%d %H:%M"))
    call append(line(".")+7, "#   Description   :")
    call append(line(".")+8, "# ===============================================================================")
endfunc

func SetComment_sh()
        call setline(1, "#!/bin/bash")
        call setline(2, "# ================================================================")
        call setline(3, "#   Copyright (C) ".strftime("%Y")." www.361way.com site All rights reserved.")
        call setline(4, "#   ")
        call setline(5, "#   Filename      :".expand("%:t"))
        call setline(6, "#   Author        :yangbk <itybku@139.com>")
        call setline(7, "#   Create Time   :".strftime("%Y-%m-%d %H:%M"))
        call setline(8, "#   Description   :")
        call setline(9, "# ================================================================")
        call setline(10, "")
endfunc

func SetComment_md()
        call setline(1,'---')
        call append(line("."), '"title":' ,)
        call append(line(".")+1, '"tags": ["tag1", "tag2"]',)
        call append(line(".")+2, '"description": " "',)
        call append(line(".")+3, '"author": "yangbk"')
        call append(line(".")+4, '---')
        call append(line(".")+5, "")
endfunc

上面创建了三个函数,分别在不同的文件结尾时,进行调用。这里也测试过另一种集体调用的方式,不过不pyhton和markdown文件不生效,暂不了解问题出现在哪里:

autocmd BufNewFile *.md,*.py,*.sh exec ":call SetTitle()"
" 定义函数SetTitle,自动插入文件头 
func SetTitle()

        if &filetype == 'py'
                call SetCommentPy()

        elseif &filetype == 'sh' 
                call SetComment_sh()

        elseif &filetype == 'md'
             call SetComment_md()
        endif
endfunc

donation