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. 用shell实现bat批处理的pause命令-追加改进

    我参考了这个文章:用shell实现bat的pause http://linux-wiki.cn/wiki/zh-hans/%E7%94%A8shell%E5%AE%9E%E7%8E%B0bat%E7% ...

  2. Plasma Cash 合约解读

    作者介绍 虫洞社区·签约作者 steven bai Plasma Cash 合约解读 Plasma Cash 合约解读 1. 合约代码 2. 合约文件简单介绍 3. Plasma Cash 的基础数据 ...

  3. Redis Jedis简介

    Redis是一种基于内存类型的数据存储工具 Jedis是一个用java写的Redis数据库操作的客户端,通过Jedis,可以很方便的对redis数据库进行操作.Jedis通过Jedis Pool进行R ...

  4. React Native iOS 离线包

    平时使用React Native 时候, js代码和图片资源运行在一个Debug Server上(需要cd 到RN目录,然后终端执行 npm start 命令开启本地服务 ).每次更新代码之后只需要使 ...

  5. Notes of Daily Scrum Meeting(11.14)

    Notes of Daily Scrum Meeting(11.14) 今天是项目第三周的周五,按原计划这时我们的项目应该已经要进入尾声进行组装调试了,但由于之前放假还有队员们的 效率比较低的原因,我 ...

  6. 《Java学习笔记JDK8》学习总结

    chapter 6   继承与多态 6.1何谓继承 1.继承的定义:继承就是避免多个类间重复定义共同行为. 2.总结:教材中通过设计一款RPG游戏的部分代码向我们展示了“重复”程序代码的弊端,为了改进 ...

  7. 5337朱荟潼Java实验报告一

    一.实验内容 1.内容一输出“Hello 名”. import java.util.Scanner;public class Hello{public static void main(String[ ...

  8. 2017-2018-20172311 暑期编程作业:APP

    2017-2018-20172311 暑期编程作业:实现一个简单倒计时APP 写在前面:暑假的时候就单纯的想要设计一个倒计时软件,然后就通过查阅资料等学了一些,包括实现倒计时功能及显示:背景音乐的添加 ...

  9. POJ 2104 K-th Number 主席树(区间第k大)

    题目链接: http://poj.org/problem?id=2104 K-th Number Time Limit: 20000MSMemory Limit: 65536K 问题描述 You ar ...

  10. vue 选项卡(转载)

    !DOCTYPE html> <html> <head> <meta charset="utf-8" /> <meta http-e ...