zoukankan      html  css  js  c++  java
  • 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");
        }
    }


  • 相关阅读:
    flink RECEIVED SIGNAL 15: SIGTERM. Shutting down as requested
    hive 正则
    scala.sys.process
    python多版本管理
    行式存储和列式存储
    Windows Latex 中日文字体设置例
    perl笔记
    wordpress plugins collection
    【转载】Windows 7下使用bcdedit删除多余启动项的命令
    修改MySQL密码
  • 原文地址:https://www.cnblogs.com/thrillerz/p/4979561.html
Copyright © 2011-2022 走看看