知识点:

1. autocmd命令: 当读写一个文件时,自动执行指定的命令;

2. autocmd event: BufNewFile 当文件不存在时开始写文件;

3. exec命令
  execute命令 将一个字符串当做vimscript命令执行
4. g命令
  :[range]global/{pattern}/{command}
  global命令在[range]指定的文本范围内(缺省为整个文件)查找{pattern},然后对匹配到的行执行命令{command},如果要对没匹配上的行执行命令,则使用global!或vglobal命令。
5. s命令
  :[range]s/pattern/string/[c,e,g,i]
     c 表示每次替换前会询问
     e 表示不显示error
     g 表示替换所有匹配项
     i 表示不区分大小写

实例详解:

 "在新建文件的头部注释中自动添加文件的创建时间
fun CreatedTime()
"exe "," . l . "g/Created Time:.*/s/Created Time:.*/Created Time:" .strftime("%Y-%m-%d %T")
"exe "g/Created Time:.*/s/Created Time:.*/Created Time:" .strftime("%Y-%m-%d %T")
exe "g/Created Time:.*/s//Created Time:" .strftime("%Y-%m-%d %T")
"exe "," . l . "s/Created Time:.*/Created Time:" .strftime("%Y-%m-%d %T")
endfun

分别对以下四种命令(相同的作用)进行详细说明:

1. exe "1," . l . "g/Created Time:.*/s/Created Time:.*/Created Time:" .strftime("%Y-%m-%d %T")
   "1,".l --- 假设l=30, 那么表示range为1-30,即在文件的1-30进行查找匹配
   g/Created Time:.* --- 表示g/{pattern},即在1-30行查找"Created Time:.*",如果找到了,则执行后面的command
   s/Created Time:.*/Created Time:". strftime("%Y-%m-%d %T") --- 表示 {command},即执行s命令进行替换
   所以,该组合命令的作用就是 在1至l行中匹配"Created Time:.*",然后替换成"Created Time:".strftime("%Y-%m-%d %T)
 2. exe "g/Created Time:.*/s/Created Time:.*/Created Time:" .strftime("%Y-%m-%d %T")
   因为不指定[range],g命令的搜索范围模式是整个文件,所以这条命名省去了指定行数范围
 3. exe "g/Created Time:.*/s//Created Time:" .strftime("%Y-%m-%d %T")
   功能同上
 4. exe "1," . l . "s/Created Time:.*/Created Time:" .strftime("%Y-%m-%d %T")
   仅用s命令进行在指定range内替换

综上所述,可以结果exec命令,g命令,s命令对新建文件的头部注释中的指定部分进行动态写入

autocmd BufNewFile *.py 0r ~/.vim/vim_templation/vim_python_header
autocmd BufNewFile *.py,*.[ch],*.sh ks|call CreatedTime()|'s

"autocmd BufNewFile *.py 0r ~/.vim/vim_templation/vim_python_header
"0r 表示从新建文件的第一行开始读入

~/.vim/vim_templation/vim_python_header 表示从该文件中读入内容写入新建文件,而这个文件就是所谓的skeleton template

完整的配置及模板:

https://github.com/suonikeyinsuxiao/trunk/tree/master/tool/vim

vim 创建文件自动生成头部注释的更多相关文章

  1. IntelliJ IDEA 创建的文件自动生成 Author 注释 签名

    IntelliJ IDEA 创建的文件自动生成 Author 注释 签名1.打开 File --> Setting2.找到 Editor --> File and Code Templat ...

  2. vim创建程序文件自动添加头部注释/自动文件头注释与模板定义

    Vim 自动文件头注释与模板定义 在vim的配置文件.vimrc添加一些配置可以实现创建新文件时自动添加文件头注释,输入特定命令可以生成模板. 使用方法 插入模式输入模式输入seqlogic[Ente ...

  3. Pycharm 设置python文件自动生成头部信息模板

    设置头部信息路径: 打开File—Settings—Editor—File and Code Templates—Python Script 输入要自动生成的头部信息模板 这样,新建py文件就会自动生 ...

  4. sublime自动生成头部注释

    1.在tool->new snippet-创建一个新的snippet sublime text2 用snippet 创建文件头部信息 Snippets are smart templates t ...

  5. sublime text 自定义插件,自动插入署名,自定义插入日期,自动生成头部注释

    自动插入署名 菜单下面的 一.工具(tool)>新代码段(new snippet…) 看到以下代码 <snippet> <content><![CDATA[ Hel ...

  6. webstorm创建js文件时自动生成js注释

    设置webstorm创建js文件时自动生成js注释 settings--Editor--File and Code Temlates 黑色框框里的内容自己填写上去,以下是参考的代码块: /** * @ ...

  7. T4 模板自动生成带注释的实体类文件

    T4 模板自动生成带注释的实体类文件 - 只需要一个 SqlSugar.dll 生成实体就是这么简单,只要建一个T4文件和 文件夹里面放一个DLL. 使用T4模板教程 步骤1 创建T4模板 如果你没有 ...

  8. CCS 6新建文件自动生成注释

    对于CCS6,可以通过配置,达到新建源文件或者头文件时,自动生成适当的注释: 一.新建源文件自动生成配置. 在某个文件夹下右击选择 New - Source File. 点击 Configure,再选 ...

  9. Visual Studio 20**自动添加头部注释信息

    关于Visual Studio 20**自动添加头部注释信息   作为一个万年潜水党,不关这一篇文章技术含量如何,也算是一个好的开始吧.   在日常的开发中我们经常需要为类库添加注释和版权等信息,这样 ...

随机推荐

  1. web.xml加载顺序 [转载]

    一 1.启动一个WEB项目的时候,WEB容器会去读取它的配置文件web.xml,读取<listener>和<context-param>两个结点. 2.紧急着,容创建一个Ser ...

  2. iOS: 首次使用App时,显示半透明新手指引

    在很多的app,我们都会发现这样一个功能:就是app启动后进入主界面时,会有一个半透明的指引图,它会提示用户如何一步步进行操作,快速的熟悉app的使用规则,极大地方便了用户的使用,也加快了app的推广 ...

  3. scala "←" "<-"

    程序里看到"←"符号 (for { routee ← valueHolder.routee } yield routee).toVector 找遍scala的操作符表都没找到,回头 ...

  4. Mysql导出逗号分隔的csv文件

    CleverCode在实际的工作中.常常须要将一些报表.或者日志数据等导出来,假设直接做页面,假设次数也不是非常多,需求也不同.所以直接导出csv文件,更加直观. 1 导出csv文件 1.1 语句格式 ...

  5. Ubuntu 14.04安装语言包后无法选择汉语问题解决

    如需转载请标明出处:http://blog.csdn.net/itas109 QQ技术交流群:129518033 安装完语言包后.尽管里面有了汉语.可是是灰色的.例如以下图所看到的: watermar ...

  6. PHP如何安装和配置Zend Studio

    1 网上下载该软件,安装之后关闭三个东西 2 新建一个本地的PHP项目 3 展开左侧的资源树,发现多了一个PHP的相关东西 4 右击"基础知识",新建一个PHP文件并输入以下代码 ...

  7. 利用反射实现JavaBean的自动赋值

    最近开发公司的一个项目,因项目不是很大的项目,所以仅仅采用了spring MVC框架,但是数据库很多表中的字段至少15个,这样当每次将数据库表中的数据取出来放入javabean中时,写setXXX方法 ...

  8. 苹果开发——Xcode证书生成、设置及应用

    原地址:http://zengwu3915.blog.163.com/blog/static/2783489720137483422530/ 开发环境: Mac OS lion 10.8.2.Xcod ...

  9. 算法笔记_018:旅行商问题(Java)

    目录 1 问题描述 2 解决方案 2.1 蛮力法 2.2 减治法 2.2.1 Johson-Trotter算法 2.2.2 基于字典序的算法   1 问题描述 何为旅行商问题?按照非专业的说法,这个问 ...

  10. 利用JqGrid结合ashx显示列表之一

    最近项目决定运用JqGrid列表控件显示相关数据,以前接触比较多还是easyui和Ext.Net的列表控件,文章简单写的小实例进行一个总结: 1:引入相关的JS及CSS文件,JqGrid目前可以利用J ...