vim 自动添加作者、版权、修改时间等信息

相信大家阅读代码时都见过这样的文件头:

# THIS FILE IS PART OF LibreBoot PROJECT (归属)
# reboot.py - The core part of the reboot library (文件名和作用概述)
# 
# THIS PROGRAM IS FREE SOFTWARE, BALABALA, IS LICENSED UNDER BALABALA
# YOU SHOULD HAVE RECEIVED A COPY OF WTFPL LICENSE, IF NOT, BALABALA (声明所使用的许可名称,通常许可证有要求)
# 
# Copyright (c) 1989-2014 Pasta Spaghetti 
# Copyright (c) 2014 RAmen Monster

作者:匿名用户
链接:https://www.zhihu.com/question/23070719/answer/31232599
来源:知乎

有什么用呢?

这样做当然是有很多好处啦:

  • 声明自己的版权

  • 简单描述代码的功能

  • 声明文件的版本,方便其他人维护

  • 为文件负责,其他程序员发现问题时能找到沟通的人

    试想,大家有没有拿到过别人的“祖传代码”,注释少、难以阅读还找不到对接人员,让不少程序员把时间浪费在了重复造轮子上。可是,如果专门去写这个文件头又会花掉额外的时间。那么,有没有一键生成文件头的神技呢?当然有啦,这就不得不祭出强大的vim编辑器了,它可以做到下面一样的操作:

废话不多说,下面我们开始:

  1. 安装vim https://www.vim.org/download.php 下载对应系统的版本。

  2. 打开配置文件vimrc

    • windows 在vim命令行输入:vsp $VIM\_vimrc
    • linux 在vim命令行输入:vsp $VIM\.vimrc
  3. 在vimrc文件中加入下面代码

    nmap <F6> ms:call TitleDet() <cr>'s 
    "在文件中按F6调用
    function AddTitle()
        call append (0,"/*********************************************************************")
        call append (1," * Author           : HolmeXin")
        call append (2," * Email            : hx1076260997@outlook.com")
        call append (3," * Last modified    : ".strftime("%Y-%m-%d %H:%M"))
        call append (4," * Filename         : ".expand("%:t"))
        call append (5," * Description      : ")
        call append (6," * ******************************************************************/")
        echohl WarningMsg | echo "Adding coryright Successfully !!" | echohl None
    endfunction
    "在上面代码中添加自己的版权信息
    function UpdateTitle()
        normal m'
        execute '/* Last modified\s*:/s@:.*$@\=strftime(": %Y-%m-%d %H:%M")@'
        normal ''
        normal mk
        execute '/* Filename\s*:/s@:.*$@\=": ".expand("%:t")@'
        execute "noh"
        normal 'k
        echohl WarningMsg | echo "Updating coryright Successfully !!" | echohl None
    endfunction
    function TitleDet()
        let n=1
        while n<7
            let line = getline(n)
            if line =~ '^\s*\*\s*Last\smodified\s*:\s*\S*.*$'
                call UpdateTitle()
                return
            endif
            let n = n+1
        endwhile
        call AddTitle()
    endfunction
    

OK,大功告成。

保存以后可以在自己文件中尝试。

尽管该功能有相应的插件,但对于我们来说安装插件相对Ctrl+c要麻烦一些,此处是该功能插件:http://www.vim.org/scripts/script.php?script_id=2902

后面还会陆续更新vim的一些技巧_

posted on 2019-04-25 20:44  HolmeXin  阅读(1108)  评论(0编辑  收藏  举报

导航