Vim 自动文件头注释与模板定义

  • 在vim的配置文件.vimrc添加一些配置可以实现创建新文件时自动添加文件头注释,输入特定命令可以生成模板。

使用方法


  • 插入模式输入模式输入seqlogic[Enter]创建时序逻辑框架
  • 新创建一个文件 gvim test.c 自动添加头部注释
  • F2映射文件头注释,命令行模式文件内按F2自动添加
  • F11映射注释,命令模式按F11出现注释行

Verilog模板生成


vim中输入seqlogic或者comlogic点击回车即可替代为模板

  1. "################### verilog ##########################
  2. :ab seqlogic always@(posedge clk or negedge rst_n)<Enter>begin<Enter>if(rst_n==1'b0)<Enter>begin<Enter>end<Enter>else<Enter>begin<Enter>end<Enter>end
  3. "生成时序逻辑框架块
  4. :ab comlogic always@(*)<Enter>begin<Enter>end
  5. "生成组合逻辑框架块
  6. "################### verilog ##########################

文件头注释自动生成


  1. "################### set file head start #########################
  2. "autocmd创建新文件自动调用setfilehead()函数
  3. autocmd BufNewFile *.v,*.sv,*.cpp,*.c,*.h exec ":call Setfilehead()"
  4. func Setfilehead()
  5. call append(0, '/***********************************************')
  6. call append(1, '#')
  7. call append(2, '# Filename: '.expand("%"))
  8. call append(3, '#')
  9. call append(4, '# Author: Clough - clough@gmail.com')
  10. call append(5, '# Description: ---')
  11. call append(6, '# Create: '.strftime("%Y-%m-%d %H:%M:%S"))
  12. call append(7, '# Last Modified: '.strftime("%Y-%m-%d %H:%M:%S"))
  13. call append(8, '***********************************************/')
  14. " call append(9, '')
  15. endfunc
  16. "map F2 to creat file head comment
  17. "映射F2快捷键,生成后跳转至第10行,然后使用o进入vim的插入模式
  18. map <F2> :call Setfilehead()<CR>:10<CR>o
  19. "################### set file head end ##########################

文件内部注释快捷键生成


  1. "################### set comment start #########################
  2. func SetComment()
  3. call append(line(".") , '//**************** comment start ********************')
  4. call append(line(".")+1, '//**************** comment end ********************')
  5. endfunc
  6. "映射F11快捷键,生成后跳转至下行,然后使用O进入vim的插入模式
  7. map <F11> :call SetComment()<CR>j<CR>O
  8. "################### set comment end ##########################

  1. 修改 ~/.vimrc,在文件最后添加以下内容:
  1. " 当新建 .h .c .hpp .cpp .mk .sh等文件时自动调用SetTitle 函数
  2. autocmd BufNewFile *.[ch],*.hpp,*.cpp,Makefile,*.mk,*.sh exec ":call SetTitle()"
  3. " 加入注释
  4. func SetComment()
  5. call setline(1,"/*================================================================")
  6. call append(line("."), "* Copyright (C) ".strftime("%Y")." Sangfor Ltd. All rights reserved.")
  7. call append(line(".")+1, "* ")
  8. call append(line(".")+2, "* 文件名称:".expand("%:t"))
  9. call append(line(".")+3, "* 创 建 者:LuZhenrong")
  10. call append(line(".")+4, "* 创建日期:".strftime("%Y年%m月%d日"))
  11. call append(line(".")+5, "* 描 述:")
  12. call append(line(".")+6, "*")
  13. call append(line(".")+7, "================================================================*/")
  14. call append(line(".")+8, "")
  15. call append(line(".")+9, "")
  16. endfunc
  17. " 加入shell,Makefile注释
  18. func SetComment_sh()
  19. call setline(3, "#================================================================")
  20. call setline(4, "# Copyright (C) ".strftime("%Y")." Sangfor Ltd. All rights reserved.")
  21. call setline(5, "# ")
  22. call setline(6, "# 文件名称:".expand("%:t"))
  23. call setline(7, "# 创 建 者:LuZhenrong")
  24. call setline(8, "# 创建日期:".strftime("%Y年%m月%d日"))
  25. call setline(9, "# 描 述:")
  26. call setline(10, "#")
  27. call setline(11, "#================================================================")
  28. call setline(12, "")
  29. call setline(13, "")
  30. endfunc
  31. " 定义函数SetTitle,自动插入文件头
  32. func SetTitle()
  33. if &filetype == 'make'
  34. call setline(1,"")
  35. call setline(2,"")
  36. call SetComment_sh()
  37.  
  38. elseif &filetype == 'sh'
  39. call setline(1,"#!/system/bin/sh")
  40. call setline(2,"")
  41. call SetComment_sh()
  42.  
  43. else
  44. call SetComment()
  45. if expand("%:e") == 'hpp'
  46. call append(line(".")+10, "#ifndef _".toupper(expand("%:t:r"))."_H")
  47. call append(line(".")+11, "#define _".toupper(expand("%:t:r"))."_H")
  48. call append(line(".")+12, "#ifdef __cplusplus")
  49. call append(line(".")+13, "extern \"C\"")
  50. call append(line(".")+14, "{")
  51. call append(line(".")+15, "#endif")
  52. call append(line(".")+16, "")
  53. call append(line(".")+17, "#ifdef __cplusplus")
  54. call append(line(".")+18, "}")
  55. call append(line(".")+19, "#endif")
  56. call append(line(".")+20, "#endif //".toupper(expand("%:t:r"))."_H")
  57.  
  58. elseif expand("%:e") == 'h'
  59. call append(line(".")+10, "#pragma once")
  60. elseif &filetype == 'c'
  61. call append(line(".")+10,"#include \"".expand("%:t:r").".h\"")
  62. elseif &filetype == 'cpp'
  63. call append(line(".")+10, "#include \"".expand("%:t:r").".h\"")
  64. endif
  65. endif
  66. endfunc

vim创建程序文件自动添加头部注释/自动文件头注释与模板定义的更多相关文章

  1. sublime 设置新建文件自动添加author(作者)等文件头信息

    很多时候, sublime 自带自动添加文件头信息, 但是并不是我们想要比如下面这样的:新建一个python文件 自动添加的author 信息== 上面并不是我想要的, 我想要下面这样的效果:== 这 ...

  2. Visual Studio+VAssistX自动添加注释,函数头注释,文件头注释

    转载:http://blog.csdn.net/xzytl60937234/article/details/70455777 在VAssistX中为C++提供了比较规范注释模板,用这个注释模板为编写的 ...

  3. vim自动添加C C++ sh文件头

    set foldenable set foldmethod=manual set fencs=utf-8,ucs-bom,shift-jis,gb18030,gbk,gb2312,cp936 set ...

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

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

  5. Visual Studio自动添加头部注释

    VS2013 自动添加头部注释 1.找到VS2013的安装目录 下文以安装目录 C:\Program Files (x86)\Microsoft Visual Studio 12.0 为例 2.修改C ...

  6. Vim 自动文件头注释与模板定义

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

  7. pycharm新建py文件时,自动补充文件头注释信息

    步骤: 1.File -->Settings 2.选择 File and Code Templates -> Files -> Python Script 文件头注释信息代码样式: ...

  8. 《从零开始学Swift》学习笔记(Day 57)——Swift编码规范之注释规范:文件注释、文档注释、代码注释、使用地标注释

    原创文章,欢迎转载.转载请注明:关东升的博客 前面说到Swift注释的语法有两种:单行注释(//)和多行注释(/*...*/).这里来介绍一下他们的使用规范. 1.文件注释 文件注释就在每一个文件开头 ...

  9. 使用korofileheader插件vs code添加文件头注释和函数注释

    korofileheadervs code添加文件头注释和函数注释1.extensions搜索fileheader,安装koroFileHeader2.设置:edit=>perference=& ...

随机推荐

  1. 用于Spring Boot Jar部署的shell脚本

    用于在Jenkins将jar发送到目标节点之后的部署操作, 包含deploy, start, stop, restart功能. 在deploy时会自动备份原jar至指定目录 # Please defi ...

  2. 【Spark深入学习 -12】Spark程序设计与企业级应用案例02

    ----本节内容------- 1.遗留问题答疑 1.1 典型问题解答 1.2 知识点回顾 2.Spark编程基础 2.1 Spark开发四部曲 2.2 RDD典型实例 2.3 非RDD典型实例 3. ...

  3. 根据IP查地理位置信息

    IP地址库下载地址: https://www.ipip.net/product/ip.html 使用方式(Python): https://github.com/ipipdotnet/datx-pyt ...

  4. 系统编码,文件编码,python编码

    系统编码,可以通过locale命令查看(LINUX)https://wiki.archlinux.org/index.php/Locale_(简体中文), centos7 配置文件在/etc/prof ...

  5. 消息中间件系列二:RabbitMQ入门(基本概念、RabbitMQ的安装和运行)

    一.基本概念 1. AMQP AMQP,即Advanced Message Queuing Protocol,一个提供统一消息服务的应用层标准高级消息队列协议.支持不同语言和不同的产品 2. 生产者 ...

  6. 网络I/O模型---同步异步阻塞非阻塞之惑

    网络I/O模型 人多了,就会有问题.web刚出现的时候,光顾的人很少.近年来网络应用规模逐渐扩大,应用的架构也需要随之改变.C10k的问题,让工程师们需要思考服务的性能与应用的并发能力. 网络应用需要 ...

  7. Python学习小组微信群公告页面

    <简明 Python 教程>读经群,PDF地址:https://pan.baidu.com/s/1FK8s4cTfwWxSktOfS95ArQ,PyCharm-Edu地址:https:// ...

  8. 乾坤合一~Linux设备驱动之终端设备驱动

    多想拥你在我的怀里 却无法超越那距离 美好回忆渐渐地远去 盼望今生出现奇迹 无尽的想念 荒了容颜 无助的爱恋 从未改变 这是今天的旋律,,,,今生今世,遥不可及~ 1 终端设备 终端是一种字符型设备, ...

  9. SpringBoot------集成MyBatis报错

    在spring boot启动main方法所在的类中加入 @MapperScan注入后报错: Invalid default: public abstract java.lang.Class org.m ...

  10. 编译器处理警告、错误 #pragma GCC diagnostic ignored "-Wunused"

    各个层次的gcc警告从上到下覆盖 变量(代码)级:指定某个变量警告 int a __attribute__ ((unused));指定该变量为"未使用的".即使这个变量没有被使用, ...