vim设置自动添加头部注释

vim设置自动添加头部注释

在这里插入图片描述
作为一个运维在编写自动化脚本时,希望在脚本头部添加自己的作者信息,又或者版权信息,但是每写一个脚本就添加一遍注释,就显得自己很呆,本身工作就是做的自动化,结果还是劳心劳肺。

可以在vim中设置自动添加头部信息,将以下代码复制到/etc/vimrc文件的末尾即可将全局中的vim,也可以添加到用户目录下的.vimrc文件末尾(用户目录下没有文件,创建直接粘贴进去就可以)。

" 当新建 .h .c .hpp .cpp .mk .sh等文件时自动调用SetTitle 函数 autocmd BufNewFile *.[ch],*.hpp,*.cpp,Makefile,*.mk,*.sh exec ":call SetTitle()" " 加入注释
func SetComment()
        call append(line("."),   "* Copyright (C) ".strftime("%Y")." xxx All Rights Reserved.")   " 版权信息,xxx改为公司名或者作者名 call append(line(".")+1, "* ") call append(line(".")+2, "* File Name: ".expand("%:t")) " 脚本文件名
        call append(line(".")+3, "* Author : xxx https://www.csdn.com")     " xxx修改为作者信息,网站可以删除 call append(line(".")+4, "* Creation Date: ".strftime("%Y-%m-%d")) " 文件创建日期
        call append(line(".")+5, "* INFO :")                                     " 脚本说明信息 call append(line(".")+7, "*") endfunc " 加入shell,Makefile注释
func SetComment_sh()
        call setline(3, "# Copyright (C) ".strftime("%Y")." xxx All Rights Reserved.")  "版权信息,xxx改为公司或者作者名 call setline(4, "# ") call setline(5, "# File Name: ".expand("%:t")) " 脚本文件名
        call setline(6, "# Author : xxx https://www.csdn.com")     " xxx改为作者信息 call setline(7, "# Creation Date: ".strftime("%Y-%m-%d")) " 文件创建日期
        call setline(8, "# INFO :")                                     " 脚本说明信息 call setline(9, "# ") endfunc " 定义函数SetTitle,自动插入文件头
func SetTitle()
        if &filetype == 'make'
                call setline(1,"")
                call setline(2,"")
                call SetComment_sh()

        elseif &filetype == 'sh'
                call setline(1,"#!/bin/bash")  " 当以sh结尾的文件时,自动添加解释器 call setline(2,"") call SetComment_sh() else call SetComment() if expand("%:e") == 'hpp' call append(line(".")+10, "#ifndef _".toupper(expand("%:t:r"))."_H") call append(line(".")+11, "#define _".toupper(expand("%:t:r"))."_H") call append(line(".")+12, "#ifdef __cplusplus") call append(line(".")+13, "extern \"C\"")
                  call append(line(".")+14, "{")
                  call append(line(".")+15, "#endif")
                  call append(line(".")+16, "")
                  call append(line(".")+17, "#ifdef __cplusplus")
                  call append(line(".")+18, "}")
                  call append(line(".")+19, "#endif")
                  call append(line(".")+20, "#endif //".toupper(expand("%:t:r"))."_H")

             elseif expand("%:e") == 'h'
                call append(line(".")+10, "#pragma once")
             elseif &filetype == 'c'
                call append(line(".")+10,"#include \"".expand("%:t:r").".h\"")
             elseif &filetype == 'cpp'
                call append(line(".")+10, "#include \"".expand("%:t:r").".h\"")
             endif
        endif
endfun

效果如下:

#!/bin/bash

# Copyright (C) 2021 小胖宇 All Rights Reserved.
# 
# File Name: test.sh
# Author : 小胖宇 https://blog.csdn.net/weixin_46152207?spm=1001.2014.3001.5343
# Creation Date: 2021-04-13
# INFO :
#
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/101779.html原文链接:https://javaforall.net

(0)
上一篇 2021年6月4日 下午1:00
下一篇 2021年6月4日 下午2:00


相关推荐

  • Ren命令_linux基础命令

    Ren命令_linux基础命令功能说明:调整程序优先级。语  法:renice[优先等级][-g…][-p…][-u…]补充说明:renice指令可重新调整程序执行的优先权等级。预设是以程序识别码指定程序调整其优先权,您亦可以指定程序群组或用户名称调整优先权等级,并修改所有隶属于该程序群组或用户的程序的优先权。等级范围从-20–19,只有系统管理者可以改变其他用户程序的优先权,也仅有系统管理者可以设置负数…

    2025年8月10日
    3
  • Linux查看硬盘挂载

    Linux查看硬盘挂载1 查看磁盘情况是否挂载上 df h 该命令会显示出挂载磁盘和挂载点 下图分别是系统盘 以及挂载的一个硬盘 dev sda1 若某个磁盘没有挂载上 可以使用 fdisk l 命令 查看本机磁盘的具体情况有两个硬盘 sda sdb 其中 sdb 没有挂载 2 在指定的硬盘上创建分区 fdisk dev sdb 查看帮助 h 新建分区 n 删除分区 d 查看分区情况 p 保存 w 输入 p 查看分区情况开始建立分区 这里只建立一个分区创建分区后查看已创建的

    2026年3月18日
    2
  • vscode自动补全html相关代码

    vscode自动补全html相关代码网上看到好多方法 许多描述的还挺复杂 但是我这边总是不成功 还好最后试出来一种简单有效的法子 在这里记录一下 1 首先搜索下载 HTMLSnippets 修改相关配置 File gt Preferences gt Settings 如下图中搜索 fileassociat 点击修改相关配置下图画圈圈的地方是我加的 网上看到很多方法 但是都不一样 我这样加之后可达到补全的效果

    2026年3月18日
    2
  • JS定时器整理(执行一次setTimeout、重复执行setInterval)

    JS定时器整理(执行一次setTimeout、重复执行setInterval)js 定时器整理 执行一次 setTimeout 重复执行 setInterval 在 javascritp 中 有两个关于定时器的专用函数 分别为 1 倒计定时器 timename setTimeout function delaytime 2 循环定时器 timename setInterval function delaytime 第一个参数 function 是定时器触发时要执行的动作 可以是一个函数 也可以是几个函数 函数间用 隔开即可 比如要弹出两个警告窗口

    2026年3月19日
    3
  • 关于数据库主键和外键的作用与区别

    关于数据库主键和外键的作用与区别一 什么是主键 外键 关系型数据库中的一条记录中有若干个属性 若其中某一个属性组 注意是组 能唯一标识一条记录 该属性组就可以成为一个主键 nbsp 比如 nbsp nbsp 学生表 学号 姓名 性别 班级 nbsp 其中每个学生的学号是唯一的 学号就是一个主键 nbsp 课程表 课程编号 课程名 学分 nbsp 其中课程编号是唯一的 课程编号就是一个主键 nbsp 成绩表 学号 课程号 成绩 nbsp 成绩表中单一一个属性无法唯一

    2026年3月17日
    2
  • 三万字带你了解那些年面过的Java八股文[通俗易懂]

    三万字带你了解那些年面过的Java八股文[通俗易懂]目录????前言1️⃣Java基础知识????基础知识导图????IO流????Lambda????&和&&的区别?????在java中如何跳出当前的多重循环?????面向对象的三大特征????”==”和equals方法究竟有什么区别?????三个与取整有关的方法????Java中运算符✨重载和重写的区别?????String和StringBuffuer、StringBuilder的区别?????java中有几种方法实现一个线程?用什么关键字修饰同步方法?stop()和suspend

    2022年6月1日
    35

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号