Vim实现自动加载模版功能可以有很多的方法,比如利用插件和AutoCmd等。根据文件名自动加载模板的功能利用网上某大牛自己写的插件实现,我针对Java代码进行简单地修改,以实现模板中的Java主类类名为文件名。

大牛的插件

插件名:template_loader.vim

下载地址:template_loader.rar

功能:根据用户自定义的模板文件,如tpl.c,tpl.java等,在创建文件时,加载相应类型的模板。模板中可以可以设置用户名、用户邮箱、文件创建时间等信息。

使用方法

1、下载解压后,将template_loader.vim放至plugin(~/.vim/plugin/ 或者 $HOME/vimfiles/plugin/)目录

2、_vimrc目录中添加下列代码,具体设置可以参考template_loader.vim中的注释自行设置。

let g:template_load=1
let g:template_path="your template file path, eg. D:/template" let g:template_tags_replacing=1
let g:T_AUTHOR="your name"
let g:T_AUTHOR_EMAIL="your email"
let g:T_DATE_FORMAT="%Y-%m-%d %H:%M:%S"
 我在使用时,模板没有生效,后来运行命令:
  :runtime /plugin/template_loader.vim ,发现导入文件失败,有特殊符号 ^M, 经查看,文档编码是dos的,改成unix后可以正常使用了

  

3、新建一个模板文件存为 templates/tpl.c(例如~/.vim/templates/tpl.c)

/*
* Author: <T_AUTHOR>
* EMAIL: <T_AUTHOR_EMAIL>
* File: <T_FILENAME>
* Date: <T_CREATE_DATE>
*/ int main()
{
<T_CURSOR>
return 0;
}

4、打开vim,输入一下命令,模板自动载入

e: test.c

更多选项请参考template_loader.vim的注释

我的改进

由于我最近在看java的基础知识,经常需要编写一些测试代码,通过大牛的template_laoder.vim可以加载自定义的java模板,但是存在一个缺陷:众所周知,java文件中public类的类名必须与文件名一致,原template_loader.vim并不能实现直接将模板中的类名替换成文件名,每次都要手动修改,略显麻烦。其实,只需往template_loader.vim中简单地添加几行代码即可解决。代码如下:

	if exists("g:T_FILENAME_USE_FULL_PATH") && g:T_FILENAME_USE_FULL_PATH==1
let s:fn = expand("%:p")
else
let s:fn = expand("%:t")
endif
sil! execute sl.','.el."s/<T_FILENAME>/".s:fn."/g"
unlet s:fn "create java template based on filename without exetension
"modified by dxh1688@gmail.com
let s:fn = expand("%:t:r")
sil! execute sl.','.el."s/<T_CLASSNAME>/".s:fn."/g"
unlet s:fn let s:curpos = search("<T_CURSOR>", 'W')
if !empty(s:curpos)
call cursor(s:curpos)
sil! execute "normal df>"
sil! execute "startinsert"
endif

原理很简单,为template_loader.vim添加一个<T_CALSSNMAE>变量,在vim加载模板文件时,获取文件名并赋给<T_CALSSNAME>变量。因此,我的tpl.java模板文件如下:

/*
* Author: <T_AUTHOR>
* Email: <T_AUTHOR_EMAIL>
* File: <T_FILENAME>
* Date: <T_CREATE_DATE>
*/ import java.util.*; public class <T_CLASSNAME> {
public static void main(String[] args) {
<T_CURSOR>
System.out.println("Hello");
}
}

VIM 模板的更多相关文章

  1. 红帽RHCE培训-课程2笔记内容

    1 kickstart自动安装 已安装系统中,在root下述目录会自动生成kickstart配置文件 ll ~/anaconda-ks.cfg 关键配置元素注释,详见未精简版 创建Kickstart配 ...

  2. vim中如何引用自定义模板文件

    我们在使用vim新建文件时可以引用自定义模板,来避免重复的数据格式处理花费太多时间. 实现方法很简单,只需要2步即可:1. 在.vim/template目录放入自己的模板文件(如shellconfig ...

  3. Vim 自动文件头注释与模板定义

    Vim 自动文件头注释与模板定义 在vim的配置文件.vimrc添加一些配置可以实现创建新文件时自动添加文件头注释,输入特定命令可以生成模板. 使用方法 插入模式输入模式输入seqlogic[Ente ...

  4. vim创建程序文件自动添加头部注释/自动文件头注释与模板定义

    Vim 自动文件头注释与模板定义 在vim的配置文件.vimrc添加一些配置可以实现创建新文件时自动添加文件头注释,输入特定命令可以生成模板. 使用方法 插入模式输入模式输入seqlogic[Ente ...

  5. 实现编程时Vim自动导入相应模板

    Vim文本编辑器以简洁高效著称,那么我们在编程时能有自动加载相应的模板,从而省去一些固定的输入提升工作效率呢!当然可以,可以有多种方法实现,我这里介绍一种非常简单的方法. 首先在你的主用户文件下面建立 ...

  6. vim批量在文件每行添加内容以及查询cloudstack模板是否是增量

    一.接着上文(更改cloudstack二级存储),从cloud数据库里查出的所有模板名称以及模板位置语句 SELECT tpl.`name`,img.id, img.`url`,tplref.`ins ...

  7. 数字IC设计入门必备——VIM自定义模板调用与VCS基本仿真操作示例

    一.前言 毕业论文答辩结束,闲下来写篇文章.芯片研发人员都在Linux系统下借助各种EDA工具和代码语言完成工作,因此提高代码开发效率,熟练运用开发工具是十分必要的.本文讲述VIM编辑神器的veril ...

  8. 使用Zabbix官方模板监控Redis运行状况

    运行环境: OS:CentOS 6.8 / Python: 2.6.6 / Pip: 7.1.0 / Redis:3.0 / Zabbix:3.0.3 Zabbix官方提供的监控模板. 项目地址:ht ...

  9. 会务准备期间材料准备工作具体实施总结 ----(vim技巧应用, python信息提取与整合, microsoft word格式调整批量化)

    会务准备期间材料准备工作具体实施总结(vim, python, microsoft word) span.kw { color: #007020; font-weight: bold; } code ...

随机推荐

  1. Java中final与 static final 修饰的常量的区别

    喵喵开车,新手上路,多多关照.有任何错误请在评论区指出. ...........................................我是万恶的分界线( • ̀ω•́ )✧......... ...

  2. SQL Operations Studio的安装和使用

    之前管理和访问SQL SERVER使用的自然是SSMS,功能确实很强大的一个数据库图形化管理软件,但是SSMS有个问题就是体积超级大,启动速度也就比较慢.今天我正好要学习一些T-SQL的内容,在微软的 ...

  3. Nginx笔记(一):安装

    Nginx在安装前需要先安装其所依赖的类库,所以需先行安装好之后再进行Nginx安装. Nginx依赖以下模块: l  gzip模块需要 zlib 库 l  rewrite模块需要 pcre 库 l  ...

  4. python数据分析画图体验

    对于numpy的函数,pands等,不是很熟,我来copy一下code,敲击一下,找找感觉. 默认的导入包import numpy as npimport matplotlib.pyplot as p ...

  5. AbstractQueuedSynchronizer 原理分析 - 独占/共享模式(转)

    1.简介 AbstractQueuedSynchronizer (抽象队列同步器,以下简称 AQS)出现在 JDK 1.5 中,由大师 Doug Lea 所创作.AQS 是很多同步器的基础框架,比如 ...

  6. 第十二周作业_PSP总结报告

    回顾1 (1)回想一下你曾经对计算机专业的畅想 当初你是如何做出选择计算机专业的决定的?经过一个学期,你的看法改变了么,为什么? 你认为过去接触到的课程是否符合你对计算机专业的期待,为什么?经过一个学 ...

  7. java 实验一

       步骤 耗时h 百分比% 需求分析 0.3h 7.5 设计 2.5h 62.5 代码实现 0.5h 12.5 测试 0,2h 5 分析总结 0.5h 12.5 实验一 截图 实验二: 实验三 实现 ...

  8. SQLyog的基本使用

    [简介] SQLyog是mysql数据库的客户端软件 [基本使用] 1.连接mysql数据库 2.SQLyog的页面使用介绍 3.基本的数据库命令 1) use命令 切换数据库 2) unsigned ...

  9. 新手学ajax2

    今天主要解决了一个困扰两天的ajax问题,就是关于从服务器获取数据时的同步和异步问题 , xhr.open("GET", url,false): 这里有三个参数“GET”表示获取的 ...

  10. NOI2002_ Galaxy银河英雄传说86

    NOI2002_ Galaxy银河英雄传说86     公元五八○一年,地球居民迁移至金牛座α第二行星,:宇宙历七九九年,银河系的两大军事集团在巴米利恩星:杨威利擅长排兵布阵,巧妙运用各种战术屡次以少 ...