最后更新于 .

此文过于久远,请参看更新文章: vim(gvim)添加作者信息插件升级版-更智能,支持更多语言

估计大家也都和我一样用过不少的编辑器,什么notepad2,emeditor,editplus,ultraedit,vs2005,sourceinsight,slickedit,emacs,vim(gvim),别看多,我其实还是比许多编辑器疯狂玩家(注意,真的是玩家)收敛多了,当然最后还是本分的从了vim(gvim),呵呵,因为Vim实在能带给我其他编辑器所没有的高效。

很多编辑器都支持在源代码中自动添加作者信息的功能,据我所致sourceinsight就支持,虽然我们的Vim(gvim)默认没有这个功能,但是只需要几行代码自己配置一下,我们一样可以让Vim(gvim)支持自动添加作者信息!

好啦,现在贴出代码如下:

"进行版权声明的设置
"添加或更新头
map <F4> :call TitleDet()<cr>'s
function AddTitle()
    call append(0,"/*============================================
    =================================")
    call append(1,"#")
    call append(2,"# Author: dantezhu - dantezhu@vip.qq.com")
    call append(3,"#")
    call append(4,"# QQ : 327775604")
    call append(5,"#")
    call append(6,"# Last modified: ".strftime("%Y-%m-%d %H:%M"))
    call append(7,"#")
    call append(8,"# Filename: ".expand("%:t"))
    call append(9,"#")
    call append(10,"# Description: ")
    call append(11,"#")
    call append(12,"===========================================
    ==================================*/")
    echohl WarningMsg | echo "Successful in adding the copyright." | echohl None
endf
"更新最近修改时间和文件名
function UpdateTitle()
    normal m'
    execute '/# *Last modified:/s@:.*$@\=strftime(":\t%Y-%m-%d %H:%M")@'
    normal ''
    normal mk
    execute '/# *Filename:/s@:.*$@\=":\t\t".expand("%:t")@'
    execute "noh"
    normal 'k
    echohl WarningMsg | echo "Successful in updating the copy right." | echohl None
endfunction
"判断前10行代码里面,是否有Last modified这个单词,
"如果没有的话,代表没有添加过作者信息,需要新添加;
"如果有的话,那么只需要更新即可
function TitleDet()
    let n=1
    "默认为添加
    while n < 10
        let line = getline(n)
        if line =~ '^\#\s*\S*Last\smodified:\S*.*$'
            call UpdateTitle()
            return
        endif
        let n = n + 1
    endwhile
    call AddTitle()
endfunction

这段代码在linux和windows下(vim/gvim)均可运行正常。

不知道大家看懂了没有,实际上在一个C/C++/C#/JAVA文件中,只需要按下F4,那么信息就自动给你添加到文件开头啦;如果已经存在版权信息,那么vim会帮你自动更新到最新状态。

另外还要帮大家提到一个小细节,即

normal m'
normal ''

这两行,他们实际上是调用了vim(gvim)内置的标记位置的方法,在执行完相应操作之后,又跳回到原来的位置。

所以当用F4添加/更新作者信息的时候,不用担心光标的位置会被移动啦~~

好啦,在自己的Vim里面试一下吧,是不是比原来方便了很多啊,有用的话要记得请我吃饭啊~~哈哈

版权所有,转载请注明出处。https://www.vimer.cn

Pingbacks

  1. vim配置攻略-打造自己的IDE | Cherrot on #

    [&#8230;] Vim在源代码中自动添加作者信息 [&#8230;]

Pingbacks已打开。

Trackbacks

引用地址

评论

  1. benzi

    benzi on #

    请问博主,我应该学习写什么东西,来编辑你这样的代码 谢谢

    Reply

    1. Dante

      Dante on #

      额,vim自已有一套脚本语言,可以google一下 vim 脚本,看一下~

      Reply

      1. benzi

        benzi on #

        谢谢

        Reply

  2. imyu37

    imyu37 on #

    冒昧的问一下,这个怎么用~&amp;~

    Reply

    1. Dante

      Dante on #

      呃,就是放到vimrc里面,然后按F4就可以执行哦

      Reply

      1. imyu37

        imyu37 on #

        可以加上去,就是在此之前会报告语法错误,后来发现原来是call append(12,"==================
        ===========================================================*/")换行了。我在_vimrc里禁止换行了。另外,我通常将这个用在.py文件里,运行代码事会报错,需要视情况将代码里的“/*”换做“"""”~!~

        Reply

        1. imyu37

          imyu37 on #

          需要视情况将代码里的“/*”换做“"""”的思路没错,但是似乎在vim脚本里不能直接替换~&amp;~

          Reply

          1. Dante

            Dante on #

            不懂哦,如果用在py里面的话,根本用不上/*了吧?
            都换成用#单行注释不行吗?

            Reply

            1. imyu37

              imyu37 on #

              你说的对,换做#也行的~!~

              Reply

  3. rhjiang

    rhjiang on #

    您好,请问你的vim 的字体和字体的颜色配置是怎么样的啊,很舒服,漂亮!可以教教我吗?

    我的QQ邮箱350057953(at)qq.com。

    Reply

    1. Dante

      Dante on #

      请参考链接:
      http://www.vimer.cn/2009/11/vim%ef%bc%88gvim%ef%bc%89%e7%bc%96%e7%a8%8b%e5%ad%97%e4%bd%93%e6%8e%a8%e8%8d%90.html

      配色名称是desertEx

      Reply

  4. jamie_jiao

    jamie_jiao on #

    个人觉得在
    normal m' 和normal mk 后面加上 normal gg 更好..

    Reply

    1. Dante

      Dante on #

      嗯,看习惯啦,我后来专门写了一个插件:
      http://www.vimer.cn/2011/02/vimgvim%E6%B7%BB%E5%8A%A0%E4%BD%9C%E8%80%85%E4%BF%A1%E6%81%AF%E6%8F%92%E4%BB%B6%E5%8D%87%E7%BA%A7%E7%89%88-%E6%9B%B4%E6%99%BA%E8%83%BD%E6%94%AF%E6%8C%81%E6%9B%B4%E5%A4%9A%E8%AF%AD%E8%A8%80.html

      Reply

  5. FelixWol

    FelixWol on #

    博主你好,按照你这个配置,插入信息没问题
    但是改变修改时间时会提示找不到# * last modified
    和# * Filenname
    这是为啥啊?

    Reply

    1. guo

      guo on #

      仔细检查Update函数就可以,我的就是这样的,终于改好了。

      Reply

发表评论