查看文章 |
VIM自动给脚本加注释
2009-11-04 13:09
写程序的时候给代码注释有时候蛮烦人的,尤其是用英文写注释的时候,不过养成写注释的习惯,对日后代码的维护还是很有帮助的,一般脚本的开头会注明编写时间,版本,用途等说明。 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的强大功能了吧 ! BTW, 当然,你可以使用其他的map名字,不一定非要 fuck 和 shit,偶用它们,不过是觉得好记罢了~~~~ |
最近读者:

