知识点:

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. 《Unity3D大风暴之入门篇(海量教学视频版)》

    <Unity3D大风暴之入门篇(海量教学视频版)> 基本信息 作者: 智画互动开发团队 出版社:电子工业出版社 ISBN:9787121222429 上架时间:2014-1-13 出版日期 ...

  2. 分享一个基于 Node.js 的 Web 开发框架 - Nokitjs

    简介 Nokit 是一个简单易用的基于 Nodejs 的 Web 开发框架,默认提供了 MVC / NSP / RESTful 等支持,并提供对应项目模板.管理工具. 资源 GitHub https: ...

  3. 机器学习: 神经网络中的Error函数

    利用神经网络做分类的时候,可以将神经网络看成一个mapping function,从输入到输出经过复杂的非线性变换.而输出的预测值与实际的目标值总是存在一定偏差的,一般利用这种偏差建立error 函数 ...

  4. Python学习(四)数据结构(概要)

    Python 数据结构 本章介绍 Python 主要的 built-type(内建数据类型),包括如下: Numeric types          int float Text Sequence ...

  5. 比較不错的一个ios找茬游戏源代码

    找茬游戏源代码 .这个是一款很不错的ios找茬游戏源代码,该游戏的兼容性很好的.并且还能够支持ipad和iphone.UI界面设计得也很美丽,游戏源代码真的是一款很完美.并且又很完整的一款休闲类的游戏 ...

  6. Spark Streaming性能调优详解(转)

    原文链接:Spark Streaming性能调优详解 Spark Streaming提供了高效便捷的流式处理模式,但是在有些场景下,使用默认的配置达不到最优,甚至无法实时处理来自外部的数据,这时候我们 ...

  7. Android内存调试命令

    adb shell dumpsys meminfo 包名 比如: adb shell dumpsys meminfo cn.com.test

  8. SQL Server基础知识三十三问 (1-7)

    1. SQL Server运行在什么端口上? 可以被修改么? 答: 1433端口. 可以修改的, 在SQL Server Configuration Manager的SQL Server Networ ...

  9. 【云计算】Docker 多进程管理方案

    docker容器内多进程的管理方案 时间 2015-05-08 00:00:00                                               涯余            ...

  10. angularjs中ng-class的使用

    1.方法一 通过数据的双向绑定(不推荐) <!DOCTYPE html> <html ng-app="myApp"> <head> <me ...