自动添加注释

 程式的时候给代码注释有时候蛮烦人的,尤其是用英文写注释的时候,但是养成写注释的习惯,对日后代码的维护还是很有帮助的,一般脚本的开头会注明编写时间,版本,用途等说明。
VIM 里面能够使用映射(map)来帮您自动插入这些信息,就像下面这样
#****************************************************
#         Author: Muddyboot - toobyddum@gmail.com
#  Last modified: 2007-08-10 21:19
#       Filename: /etc/vimrc
#    Description: Configuration for vim editor
#****************************************************
其中 Last modified 后面的时间是根据当前时间自动插入的,Filename 后的文档名也是当前编辑的文档名。
我们的目的是在VIM的命令模式下面,按下fuck 4个字符,自动在文档的开头插入上面的信息,这就需要在VIM的配置文档中定义关于 fuck 的map指令
为了方便,先定义一个函数
function AddTitle()
call setline(1,"#****************************************************")
call append(1,"#         Author: Muddyboot - toobyddum@gmail.com")
call append(2,"#  " . "Last modified: " . strftime("%Y-%m-%d %H:%M"))
call append(3,"#       Filename: " . expand("%"))
call append(4,"#    Description: ")
call append(5,"#****************************************************")
endf
函数用 function 关键字开头,函数名的第一个字母需要大写
setline 表示在第一行插入 #******** 
append 表示追加行,expand表示展开变量的值,%代表文档名,strftime 表示当前时间
然后定义 map 规则:
map fuck :call AddTitle():$o
表示按键,表示回车,上面的指令的意思是在文档开头加入注释,然后跳到文档末尾,进入输入模式。
OK,很简单吧~~~~~~ 
好,当您对一个脚本修改后,需要更新 Last modified 时间怎么办,手动吗?当然不用这么麻烦~~~~ 
同样能够指定一个 map 规则,比如 shit
map shit :/# *Last modified: /s@:.*$@/=strftime(": %Y-%m-%d %H:%M")@
让我们一步一步分析上面规则的意思:
/# *Last modified: / 表示查找以 # 开头,后面跟上一些空格,然后是 Last modified: 的行,也就是上面插入注释的第2行
s@....@@ 表示替换
第一个 @....@ 中间的内容,表示原来的时间,
第二个 @....@ 是新的当前时间,由于这个时间是动态的,需要调用函数,故在@后需要用 /= 来告诉 s 命令
/= 后面的代码是个表达式,其值就是当前时间
最后一个  代表回车,也就是执行这个替换操作
好了,现在,您只要按下fuck,VIM自动行首插入注释,假如下次您修改了文档,按下shit,注释中的最后更改时间则会自动同步到当前时间,再一次感受到了VIM的强大功能了吧 !

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/265027.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

太极创客ESP8266 - NodeMCU、JSON、MQTT教程(基于Arduino)

太极创客ESP8266视频教程:https://www.bilibili.com/video/BV1L7411c7jw?fromsearch&seid4858784806004995732&spm_id_from333.337.0.0 官网资料:http://www.taichi-maker.com/homepage/esp8266-nodemcu-iot/iot-c/esp8266-iot-basics/ 太极创客…

Voltage Keepsake CodeForces - 801C (思维+二分)

题目链接 这是一道很棒的二分题。 思路: 首先先思考什么情况下是可以无限的使用,即输出-1. 我们思考可知,如果每一秒内所有设备的用电量总和小于等于充电器每秒可以充的电,那么这一群设备就可以无限使用。 接下来分析不是无限使用…

Linux网络服务-LAMP之Php基于Apache的模块实现

一、概述 首先,如标题所示我接下来的实验就是搭建一个LAMP平台然后实现一个Blog站点的实现,那"Php基于Apache的模块实现"这又是神马意思呢,我们知道Apache与Php的结合方式有常见的三种:基于module、基于CGI、基于Fa…

4G DTU使用教程

摘自:https://www.bilibili.com/video/BV1uP4y187bw?spm_id_from333.999.0.0 目录了解4G DTUATK - M750模组使用NET模式(网络透传)使用HTTP模式使用阿里云透传模式使用百度云透传模式使用OneNET模式透传模式了解4G DTU 4G DTU对比传统的4G模组更简单易用&#xff…

Kalman Filter

原理介绍 https://pan.baidu.com/s/15zDz8TeM8PKMsH231a0fOw 简单的例子 https://www.jianshu.com/p/d3b1c3d307e0 下图中“对应例子”就是所引用简书博客提到的例子。预测-校正交替运行。 博客:自动驾驶基础之——如何写卡尔曼滤波器? https://mp.weixi…

专注

"选择不做一件事情,有时候比做更难."我很喜欢这句话,一个公司要专注于自己的项目.即使对于一个项目而言,也要专注.因为公司发展初期各种资源是有限的,必须把资源集中在一点上.但有时候项目的定位牵扯到项目的战线问题.既要达到定位,又要控制利用好自己的资源,这个确实…

移远EC20 4G模块LTE开发板三网通模块 MQTT阿里云物联网

摘自:移远EC20 4G模块LTE开发板三网通模块 MQTT阿里云物联网STM32代码-电脑看 地址:https://www.bilibili.com/video/BV1EJ411P7CR?fromsearch&seid6590774415258771438&spm_id_from333.337.0.0 摘自:STM32开发板NB-IOT移远BC26 NB模…

在 LinearLayout里addView一个图表

2019独角兽企业重金招聘Python工程师标准>>> activity_main.xml <LinearLayout xmlns:android"http://schemas.android.com/apk/res/android"xmlns:tools"http://schemas.android.com/tools"android:layout_width"fill_parent"and…

准备写个nhibernate的学习笔记

经理说要用这个做数据层管理。先找点资料 C C 先&#xff5e;&#xff01; 有心得就慢慢贴上来转载于:https://www.cnblogs.com/marsforest/archive/2005/04/19/140670.html

Home Assistant 安装Samba和SSH server 插件

安装 Samba 插件 Samba 是 SMB/CIFS 网络协议的重新实现, 它作为 NFS 的补充使得在 Linux 和 Windows 系统中进行文件共享、打印机共享更容易实现。 Smaba 服务是必装的一个插件&#xff0c;Hass.io 通过它与局域网内的其他设备进行文件共享&#xff0c;是之后编辑 Hass.io 配置…

涂鸦WIFI模组方案(模组 SDK)

摘自&#xff1a;涂鸦智能模组 SDK 开发系列课程 地址&#xff1a;https://www.bilibili.com/video/BV1Kq4y1o728?p1 摘自&#xff1a;涂鸦智能模组SDK开发系列课程——Wi-Fi接入 地址&#xff1a;https://blog.csdn.net/sandwich_iot/category_11289915.html?spm1001.2014.3…

IOS静态库生成及测试

目录&#xff1a;1 生成静态库(.a文件)2 测试静态库文件1 生成静态库文件&#xff1a;1.1创建静态库项目static_library1.2 添加方法&#xff1a; - (int)getMax:(int)a b:(int)b;-(int)getMin:(int)a b:(int)b;(void)print;实现这些方法1.3 编译前选择IOS Device和模拟器&am…

整几个题给大家玩玩,看看“下盘功夫”怎样

不用编译器&#xff0c;回复你的答案。 感觉现在很多程序员老在追遂各种各样的新名词、新术语&#xff0c;别人把几个英语单词整一块&#xff0c;取出第一个字母&#xff0c;X除外&#xff0c;这年头&#xff0c;X牛啊&#xff0c;不在第一也优先取它&#xff0c;然后好像记住…

1-9-假期训练心得(dp+bfs)

题目一&#xff1a;传送门 思路&#xff1a;就是简单的bfs&#xff0c;注意仔细审题&#xff0c;加上对转弯次数的判断。 题目二&#xff1a;传送门 思路&#xff1a;简单dp&#xff0c;记录每一秒每个位置接到的大饼的数量。 状态转移方程&#xff1a;dp[i][j]max(dp[i][j] , …

Jlink commander、MCU GD32启动方式、Bootloader

摘自&#xff1a;学会如何使用jlink commander等 地址&#xff1a;https://www.bilibili.com/video/BV18b4y1C76i?spm_id_from333.999.0.0 摘自&#xff1a;Jlink使用技巧系列教程索引 地址&#xff1a;https://blog.csdn.net/whik1194/article/details/86525103

在eclipse中,怎么改变字体大小?

在eclipse中&#xff0c;怎么改变字体大小&#xff1f; 菜单栏里面点Window->Preference->General->Appearance->Colors and Fonts,再在右边的框里选Java->Java Editor Text Font(overrides default:Text Font),然后再点右边的Edit按钮&#xff0c;编辑好了点确…

基于javascript的asp数据库操作类,含分页、字符串截取、用户登陆验证[原创]

2005.01.15发表于blog.csdn.net/zxub无聊又用了用asp,发现还是不爽,已经习惯了面向对象了,就想改进了,vbscript不用,感觉看起来很不爽,就用javascript写了下面个类:<%//// //// 用Javascript实现的一个数据库操作类 //// ////function D…

atcoder A - Frog 1(DP)

A - Frog 1 Time Limit: 2 sec / Memory Limit: 1024 MB Score : 100100 points Problem Statement There are NN stones, numbered 1,2,…,N1,2,…,N. For each ii (1≤i≤N1≤i≤N), the height of Stone ii is hihi. There is a frog who is initially on Stone 11. He will…

物联网通讯协议:MQTT,NB-IOT,Zigbee,CoAP,RFID,BLUETOOTH,NFC,4G,HTTP

更多干货推荐可以去牛客网看看&#xff0c;他们现在的IT题库内容很丰富&#xff0c;属于国内做的很好的了&#xff0c;而且是课程刷题面经求职讨论区分享&#xff0c;一站式求职学习网站&#xff0c;最最最重要的里面的资源全部免费&#xff01;&#xff01;&#xff01;点击进…

【转】关于WaterFall瀑布流式布局的性能优化

市面上已存在的瀑布流式布局的网站&#xff1a;拼范网&#xff1a;http://www.pinfun.com/迷尚网&#xff1a;http://www.mishang.com/凡客达人&#xff1a;http://star.vancl.com/美丽说&#xff1a;http://www.meilishuo.com/蘑菇街&#xff1a;http://www.mogujie.com/welco…