知识点:

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. Install Tomcat 7 on CentOS, RHEL, or Fedora

    linux下的 Tomcat 安装: http://www.davidghedini.com/pg/entry/install_tomcat_7_on_centos

  2. Spark Streaming中空batches处理的两种方法(转)

    原文链接:Spark Streaming中空batches处理的两种方法 Spark Streaming是近实时(near real time)的小批处理系统.对给定的时间间隔(interval),S ...

  3. Axure Beta 7.0 汉化版下载

    Axure的最新版本下载地址如下 安装文件地址: PC版下载地址:点我下载  Mac版下载地址:点我下载 下载后下载汉化包即可进行汉化(含中文部件库) 汉化文件:点我下载 -------------- ...

  4. java springMVC 报400错误问题

    java springMVC 中如果报400错误 很有可能是因为时间转换的问题. 我在项目中就遇到了这个问题,是因为我少引用了一个库,如果是因为时间问题的话添加以下依赖就可以解决. <depen ...

  5. SPSS Clementine 数据挖掘入门3

    转摘:http://www.cnblogs.com/dekevin/archive/2012/04/27/2473683.html 了解SPSS Clementine的基本应用后,再对比微软的SSAS ...

  6. MFC【6】文件I/O和串行化

    文件输入和输出(I/O)服务是所有操作系统的主要工作.Microsoft Windows提供了各种API函数用来读.写和操作磁盘文件.MFC将这些桉树和CFile类融合在面对对象的模型里.其中CFil ...

  7. C# 窗体WinForm中动态显示radioButton实例

    一个项目中用到的实例,根据数据库查询出待显示的radioButton的个数,显示在一个新的窗口中. //动态显示radioButton public void showRadioButton(int ...

  8. MSSQL 触发器 暂停 和 启动

    开启关闭触发器 禁用: ALTER TABLE member DISABLE TRIGGER trig1 GO 恢复: ALTER TABLE member ENABLE TRIGGER trig1 ...

  9. angularjs中ng-show的使用

    ng-show 指令在表达式为 true 时显示指定的 HTML 元素,否则隐藏指定的 HTML 元素.下面是示例: <!doctype html> <html lang=" ...

  10. 公共DNS服务

    一: 谷歌的 8.8.8.8 8.8.4.4 国内的两组 114.114.114.114 114.114.115.115