zoukankan      html  css  js  c++  java
  • vim 创建文件自动生成头部注释

    知识点:

    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 表示不区分大小写


    实例详解:

    1 "在新建文件的头部注释中自动添加文件的创建时间
    2 fun CreatedTime()
    3     "exe "1," . l . "g/Created Time:.*/s/Created Time:.*/Created Time:" .strftime("%Y-%m-%d %T")
    4     "exe "g/Created Time:.*/s/Created Time:.*/Created Time:" .strftime("%Y-%m-%d %T")
    5     exe "g/Created Time:.*/s//Created Time:" .strftime("%Y-%m-%d %T")
    6     "exe "1," . l . "s/Created Time:.*/Created Time:" .strftime("%Y-%m-%d %T")
    7 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

  • 相关阅读:
    Java多线程详解
    自动化构建工具Maven
    解决 安装cocoapods失败,提示 requires Ruby version >=2.2.2
    安装Cocoapods时候ERROR: While executing gem ... (Errno::EPERM)
    iOS可执行文件瘦身方法
    ios webview自适应实际内容高度4种方法
    iOS8 tableview separatorInset cell分割线左对齐,ios7的方法失效了
    Reveal1.5破解,iOS_UI调试利器Reveal最新版本破解方法
    Xcode安装插件,错误选择了Skip Bundles,重新出现Load Bundles方法
    10分钟搞定支付宝支付 的 各种填坑
  • 原文地址:https://www.cnblogs.com/black-mamba/p/9280316.html
Copyright © 2011-2022 走看看