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

# 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的一些技巧_

vim 自动添加作者、版权、修改时间等信息的更多相关文章

  1. vs2017 新建Class 文件时,自动添加作者版权声明注释

    1.用文本打开,在其头部加上 “C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\Common7\IDE\ItemTempl ...

  2. vim文件时自动添加作者、时间、版权等信息

    在工作中,搞运维的工程师往往会编写或完善自动化脚本时,都会手动添加表头注释,例如版权声明.作用.时间等信息提示,如果每次都手动编辑添加会大大消耗时间,所有我们可以利用快捷方法来节省时间,一种是手动在家 ...

  3. [linux] vim在源代码中自动添加作者信息(转载)

    原文出处: http://www.vimer.cn/2009/10/用vim在源代码中添加你的个人信息.html vim ~/.vimrc "进行版权声明的设置 "添加或更新头 m ...

  4. eclipse自动添加作者、日期等注释

    使用eclipse的时候一般会添加自己的注释,标注日期作者等内容,我总结的添加注释的方式有两种:一.在新建class时自动添加注释:二.通过快捷键自动添加注释.下面分别描述一下添加方式. 一.新建cl ...

  5. Sublime2 DocBlocker插件在自动补全注释时输出自定义作者和当前时间等信息

    Sublime在进行前端开发时非常棒,当然也少不了众多的插件支持,DocBlocker是在Sublime平台上开发一款自动补全代码插件,支持JavaScript (including ES6), PH ...

  6. vim自动添加tags、cscope

    每次打开一个工程都需要重新添加tags.cscope,很不方便,网上找了一下. 将其添加到 ~/.vimrc 中之后,打开 vim 就会自动搜索当前路径下的tags.cscope添加进去. 自动添加 ...

  7. Vim 自动添加脚本头部信息

    每次写脚本还在为忘记添加头部信息啥的烦恼? 按照下面这么做,帮你减轻点烦恼. # 打开配置文件: vim /root/.vimrc # 添加如下信息: autocmd BufNewFile *.sh ...

  8. EF Core3.1 CodeFirst动态自动添加表和字段的描述信息

    前言 我又来啦.. 本篇主要记录如何针对CodeFirst做自动添加描述的扩展 为什么要用这个呢.. 因为EF Core3.1 CodeFirst 对于自动添加描述这块 只有少部分的数据库支持.. 然 ...

  9. Pycharm---新建文件时 自动添加作者时间等信息

    可用的变量有: $ {PROJECT_NAME} - 当前项目的名称. $ {NAME} - 在文件创建过程中在“新建文件”对话框中指定的新文件的名称. $ {USER} - 当前用户的登录名. $ ...

随机推荐

  1. dialog学习

    11.dialog底部弹出动画: ==== 11.dialog底部弹出动画: 点击Button调用代码 private void show() { Dialog dialog = new Dialog ...

  2. python 字符串转16进制函数

    需要用python处理16进制的文本,比如像下面这个文本 40 80 C0 40 80 C0 40 80 C0 40 80 C0 40 BF CC 40 80 C0 40 80 C0 40 80 C0 ...

  3. 神经网络常用的Numpy功能笔记

    数组初始化 x=np.array([[1,2]]) x=np.zeros((2,3)) 生成随机数 w=np.random.randn(2,3) PIL image转换成array img = np. ...

  4. 图解 (a + b) * (a + b) == a**2 + 2*a*b + b**2

    示意图

  5. Linq to SQL -- Insert、Update、Delete

    Insert/Update/Delete操作 插入(Insert) 1.简单形式 说明:new一个对象,使用InsertOnSubmit方法将其加入到对应的集合中,使用SubmitChanges()提 ...

  6. Promise实现ajax

    利用Promise实现ajax GET function getAjax(url) { return new Promise((resolved,rejected)=>{ //创建ajax对象 ...

  7. 【HP-UNIX】修改HP-UNIX主机名称

    原文链接:https://blog.csdn.net/lantianbaiyunbj/article/details/53434537 HP-UX修改主机IP地址 方法一 1.set_parms ho ...

  8. MongoDB(1)--MongoDB安装及简介

    一.MongoDB的应用场景及实现原理二.MongoDB的常用命令及配置三.手写基于MongoDB的ORM框架四.基于MongoDB实现网络云盘实战五.MongoDB 4.0新特性 一.MongoDB ...

  9. c++堆和栈(转)

    想要学好C++的C++堆栈,那么就要了解什么是C++堆栈,所为C++堆栈就是一种数据项按序排列的数据结构,只能在一端(称为栈顶(top))对数据项进行插入和删除,分为堆和栈两部分. 在C++中,内存分 ...

  10. centos7安装svn

    摘抄自http://blog.csdn.net/junehappylove/article/details/65963025 1.安装 sudo yum install subversion 查看安装 ...