• VIM 模板


    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");
        }
    }


  • 相关阅读:
    凤凰网面试经历——钢管舞也算精英文化吗
    立此为证:豆瓣要做电影数字发行了(2010818)
    Officially GoldenGate was purchased by oracle in October 1, 2009
    11gR2新特性:Heavy swapping observed on system in last 5 mins.
    Oracle BMW Racing sailing vessel帆船图
    Know more about CBO Index Cost
    Samsung Epic 4G 图文介绍
    Oracle Exalogic X22 HalfRack DiagramExaloic半配图
    Java 编程下线程的生命周期
    Android 编程组件Fragments 的生命周期与 Activity 的生命周期之间的关系
  • 原文地址:https://www.cnblogs.com/thrillerz/p/4979561.html
Copyright © 2020-2023  润新知