配置vim在源代码中自动添加作者信息

每个程序员都有自己心爱的代码编辑和查看工具,相信不少Linux下的程序员都喜欢用Vim,尽管Vim没有SourceInsight这种依托于桌面环境的编辑器看起来那样强大,但是Vim的高效、简洁以及强大的可配置性都让它吸引了无数忠实的fans。

很多编辑器都支持在源代码中自动添加作者信息的功能,SourceInsight就有这项功能。Vim默认是没有这个功能,但是只要我们稍作配置,就可以实现这个功能了。

在Linux下我们需要修改Vim的配置文件vimrc,位于:
/etc/vim/vimrc, 然后在配置文件最后添加如下信息,就可以实现在源代码中自动添加作者信息了:

    此配置文件只分三个部分:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
"此代码是的中文无需复制"
"第一部分
"将键盘上的F4功能键映射为添加作者信息的快捷键
map <F4> ms:call TitleDet()<cr>'s
function AddTitle()
    call append(0,"##############################################")
    call append(1,"#")
    call append(2,"# Author: jinguangping - jingguangping@qq.com")
    call append(3,"#")
    call append(4,"# QQ : 407576293")
    call append(5,"#")
    call append(6,"# Last modified: ".strftime("%Y-%m-%d %H:%M"))
    call append(7,"#")
    call append(8,"# Filename: ".expand("%:t"))
    call append(9,"#")
    call append(10,"# Description: ")
    call append(11,"#!/bin/bash")
    echohl WarningMsg | echo "Successful in adding the copyright." | echohl None
endfunction
"此处为预显示的格式
"第二部分
"更新最近修改时间和文件名
function UpdateTitle()
    normal m'
    execute '/# *Last modified:/s@:.*$@\=strftime(":\t%Y-%m-%d %H:%M")@'
    normal ''
    normal mk
    execute '/# *Filename:/s@:.*$@\=":\t\t".expand("%:t")@'
    execute "noh"
    normal 'k
    echohl WarningMsg | echo "Successful in updating the copy right." | echohl None
endfunction
"第三部分
"判断前10行代码里面,是否有Last modified这个单词(为更新时间的依据),
"如果没有的话,代表没有添加过作者信息,需要新添加;
"如果有的话,那么只需要更新即可
function TitleDet()
    let n=1
    while n < 10
        let line = getline(n)
        if line =~ '^\#\s*\S*Last\smodified:\S*.*$'
            call UpdateTitle()
            return
        endif
        let n = n + 1
    endwhile
    call AddTitle()
endfunction

   将此三部份写到/etc/vimrc的末尾即可(注:中文不要复制)

   使用vim 文件名,在默认模式下按F4,就会出现下面的结果,写完或修改后,回到默认模式下,再按一次就会将时间修改了

这是在我电脑上运行的结果:

wKiom1L_qtexF9YAAACN7n8f3F0235.jpg

      PS:

                刚开始学写shell脚本,在网上找了好多,最接近正解的是:可以正常运行,但会在vim的默认格式中每一次都会提示:

               E20: mark not set

               在谷哥的帮助下找到了解决办法:

               地址为:

                            http://www.cnblogs.com/jianyungsun/archive/2011/02/14/1954057.html

                小生菜鸟一只,欢迎各种砖头瓦块a_c










本文转自 jinlinger 51CTO博客,原文链接:http://blog.51cto.com/essun/1359494,如需转载请自行联系原作者

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

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

相关文章

paddle模块的详细介绍

https://blog.csdn.net/hua111hua/article/details/89415396

[CareerCup] 2.4 Partition List 划分链表

2.4 Write code to partition a linked list around a value x, such that all nodes less than x come before all nodes greater than or equal to x. LeetCode上的原题&#xff0c;请参见我之前的博客Partition List 划分链表。转载于:https://www.cnblogs.com/grandyang/p/…

sdl的缩放问题

SDL是一种既是开源的&#xff0c;也是跨平台的多媒体开发包&#xff0c;在各种平台上应用很广&#xff0c;经常和FFMPEG等解码器同时使用。对于在windows mobile等缺乏通用播放器的平台来说&#xff0c;是一种很好的选择。网上很多代码&#xff0c;介绍SDL的用法&#xff0c;主…

Ubuntu系统盘制作

1、首先打开UltraISO软件&#xff0c;尽量下载最新版的&#xff0c;小编曾用某个旧版的UltraISO&#xff0c;制作的安装盘&#xff0c;不能不能识别磁盘&#xff0c;安装失败! 2、点击工具栏中的第二个打开镜像文件工具&#xff0c;如图红色方框标志按钮&#xff0c;然后在打开…

RH131 网络配置

ip addr show 查看当前网络地址 ip link show 查看网络链接状态 ip -s link show 查看网卡统计信息 ip addr add 192.168.0.154 添加ip地址 ip link dev eth0 down 禁用ip地址 网卡的配置文件/etc/sysconfig/network-scripts/ifcfg-ethx 自动专用地址&#xff1a;169.254.*.* …

学习笔记02:直播串讲02

1.基于模型的学习 根据以往的学习经验&#xff0c;建立起输入输出的模型&#xff0c;然后预测输入&#xff0c;并且将输入带入到模型中&#xff0c;进而预测出输出的结果&#xff0c;这种学习称为基于模型的学习 2.机器学习的过程 1&#xff09;数据收集&#xff1a;通过爬虫、…

如何将Pcm格式的音频文件转换成Wave格式的文件

最近在做一款变声App&#xff0c;其中就用到了将pcm格式转wave格式&#xff0c;下面贴出源代码&#xff0c;希望带有需求的童鞋有帮助&#xff01;&#xff01;&#xff01;这里是c语言写的&#xff0c;也可以用java实现。当然java调用native函数要用到jni技术。具体jni技术自己…

Dojo仪表板

Dojo它提供了一个良好的仪表板显示器&#xff0c;的影响&#xff0c;如以下&#xff1a; <!DOCTYPE html> <html> <head><title>Dojo仪表盘</title><meta charset"utf-8"><script src"http://192.168.240.186/arcgis_js…

在新的固态硬盘只装ubuntu16.04系统,重启后无启动项解决方案

方法一&#xff1a;不要使用UltraISO制作ubutnu系统启动盘&#xff0c;需要用UniversalUSBInstaller &#xff08;这个是Ubuntu官方推荐的制作u盘的软件&#xff09; 不用UltraISO这个是因为&#xff0c;装完ubuntu系统后&#xff0c;启动的时候只有黑屏幕的光标&#xff0c;是…

学习笔记(22):Python网络编程并发编程-什么是线程

立即学习:https://edu.csdn.net/course/play/24458/296436?utm_sourceblogtoedu 什么是线程&#xff1f;&#xff08;以地铁为例&#xff09; 1.北京地铁、上海地铁、广州地铁称之为三个不同的进程&#xff1b;而上海1号线上海3号线称之为线程&#xff1b; 2.进程是资源单位&a…

流程图制作在云上 https://www.processon.com/

流程图制作在云上 &#xff1a; https://www.processon.com/ 转载于:https://www.cnblogs.com/hopesun/p/4661429.html

机械硬盘变成了动态磁盘怎么压缩不了该磁盘

由于我的电脑原装是win8系统&#xff0c;自从win8系统以及以后的win10系统&#xff0c;磁盘管理方式变成了两种&#xff0c;1是基本磁盘管理&#xff1b;2是动态磁盘管理 由于本人想要在机械硬盘上压缩一个可用的绿色空间出来安装ubuntu系统&#xff1b;由于本人的三星机械100…

Exchange2013恢复已删除用户邮箱

上一篇文章我们讲到了如何恢复已禁用的邮箱。但是在微软的Exchange中&#xff0c;禁用邮箱和删除邮箱毕竟是两个截然不同的概念&#xff0c;这篇文章我们就来看看如何恢复已删除的邮箱。 1.依然是新建用户“张三”&#xff0c;然后给其发一封邮件&#xff0c;作为后续邮箱数据恢…

学习笔记(23):Python网络编程并发编程-开启线程的两种方式

立即学习:https://edu.csdn.net/course/play/24458/296437?utm_sourceblogtoedu 开启线程的两种方法&#xff1a;threading.Thread 1.方法一&#xff1a; from threading import Thread import time#方式一&#xff1a;直接使用thrending下的Thread类 def mythread(name):pri…

调用异步服务时的超时处理

主线程调用异步服务后&#xff0c;通过设定主线程的等待时间来进行超时处理。Demo如下&#xff1a;AsyncTask.cs 1 using System;2 using System.Threading.Tasks;3 using MyCSharp.ExternalService;4 5 namespace MyCSharp.Grammas6 {7 public class AsyncTask8 {9 …

linux下一个apache+tomcat负载均衡和集群

先说一下我的环境 一个ubuntu虚拟机&#xff0c; 一个apache2.2示例 两tomcat1.7示例 1.安装apacheserver sudo apt-get install apache2假设要重新启动的话&#xff0c;执行命令&#xff1a; sudo /etc/init.d/apache2 restart ubuntu下的apache会默认创建路径/var/www&#x…

JS实现css属性动画效果

html代码 <!DOCTYPE html> <html><head><meta charset"UTF-8"><title>css属性运动框架</title><style>body,div{margin: 0;padding: 0;}ul,li{list-style: none;}ul li{width: 200px;height: 100px;background: yellowgre…

学习笔记(24):Python网络编程并发编程-进程与线程的区别

立即学习:https://edu.csdn.net/course/play/24458/296438?utm_sourceblogtoedu 线程与进程的区别&#xff1a; 1.消耗区别&#xff1a;进程>线程 1&#xff09;进程运行结果 #进程运行 from multiprocessing import Process def task(name):print("我是%s"%na…

Codeforces Beta Round #1

A /*************************************************************************> File Name: A.cpp> Author: opas_chenxin> Mail: 1017370773qq.com > Created Time: 2016年05月06日 星期五 02时22分23秒 ************************************************…

windows系统中创建线程常用哪几个函数,有什么区别?

windows系统中创建线程常用哪几个函数&#xff1f; 在windows系统中创建线程的函数有&#xff1a; CreadThread&#xff0c;AfxBeginThread&#xff0c;_beginthread&#xff0c;_beginthreadex。 他们的区别在于使用的场景不同。 CreateThread是Windows的API函数(SDK函数的标…