还是照例,先贴个图给大家解解馋:
好啦,现在贴出代码如下:
1 "进行版权声明的设置 2 "添加或更新头 3 map <F4> :call TitleDet()<cr>'s 4 function AddTitle() 5 call append(0,"/*=============================================================================") 6 call append(1,"#") 7 call append(2,"# Author: dantezhu - dantezhu@vip.qq.com") 8 call append(3,"#") 9 call append(4,"# QQ : 327775604") 10 call append(5,"#") 11 call append(6,"# Last modified: ".strftime("%Y-%m-%d %H:%M")) 12 call append(7,"#") 13 call append(8,"# Filename: ".expand("%:t")) 14 call append(9,"#") 15 call append(10,"# Description: ") 16 call append(11,"#") 17 call append(12,"=============================================================================*/") 18 echohl WarningMsg | echo "Successful in adding the copyright." | echohl None 19 endf 20 "更新最近修改时间和文件名 21 function UpdateTitle() 22 normal m' 23 execute '/# *Last modified:/s@:.*$@=strftime(": %Y-%m-%d %H:%M")@' 24 normal '' 25 normal mk 26 execute '/# *Filename:/s@:.*$@=": ".expand("%:t")@' 27 execute "noh" 28 normal 'k 29 echohl WarningMsg | echo "Successful in updating the copy right." | echohl None 30 endfunction 31 "判断前10行代码里面,是否有Last modified这个单词, 32 "如果没有的话,代表没有添加过作者信息,需要新添加; 33 "如果有的话,那么只需要更新即可 34 function TitleDet() 35 let n=1 36 "默认为添加 37 while n < 10 38 let line = getline(n) 39 if line =~ '^#s*S*Lastsmodified:S*.*$' 40 call UpdateTitle() 41 return 42 endif 43 let n = n + 1 44 endwhile 45 call AddTitle() 46 endfunction
这段代码在linux和windows下(vim/gvim)均可运行正常。
不知道大家看懂了没有,实际上在一个C/C++/C#/JAVA文件中,只需要按下F4,那么信息就自动给你添加到文件开头啦;如果已经存在版权信息,那么vim会帮你自动更新到最新状态。
另外还要帮大家提到一个小细节,即
1 2 |
normal m' normal '' |
这两行,他们实际上是调用了vim(gvim)内置的标记位置的方法,在执行完相应操作之后,又跳回到原来的位置。所以当用F4添加/更新作者信息的时候,不用担心光标的位置会被移动啦~~
好啦,在自己的Vim里面试一下吧,是不是比原来方便了很多啊,有用的话要记得请我吃饭啊~~哈哈
references:http://www.cnblogs.com/mfryf/p/3643349.html