最近准备已久的模板载入插件 load_template 终于搞定了,现在正式放出下载大家使用.www.vim.org上已经放出了下载链接,如下:
http://www.vim.org/scripts/script.php?script_id=2957

注:不好意思,由于之前我的疏忽,部分在vimrc中的变量没有放到插件中,已经修正,在www.vimer.cnwww.vim.org均可下载

就不多废话了,直接把写的中文介绍文档贴到这里啦

1.简单介绍
    该插件主要实现了自动载入各种模板的功能(如类模板,html模板,makefile模板等等),并且支持动态模版的功能,即能够通过脚本动态的实现文件名,类名的替换。(默认已经提供了简单main函数模板、单体类模板、html标准模板、xml标准模板)
2.使用说明
    1)下载load_template.vim插件,并放在plugin的目录下
    2)在vimrc文件中指定你的模板目录,来指定插件读取模板的目录。
    如在下载包中已经带了一个template的目录,里面按照文件扩展名、文件类型,分别建立了目录,你可以将这个template文件夹复制到C:\,那么就可以指定
    let g:template_path =
‘C:\template\’
    注意,最后的’
\’请务必不要忘记(在linux下也是一样要加 ‘/’
    3)新建/打开一个test.cpp,执行
    :LoadTemplate
    试试看,是否有类似模板列表出来啦~
    Template filelist:
    0        :        cpp/main.cpp
    1        :        cpp/singleton.h
    please select:
    4)你甚至可以自己制作模板文件~~只需要参考已经存在的模板文件就行啦~~支持vim脚本的哦
3.命令说明
    *根据当前文件的扩展名、文件类型来自动列出模板文件
    :LoadTemplate
    *手动指定需要载入的模板文件类型(其中type为需要载入的模板类型,如cpp,html…)
    :LoadTemplate type
4.模板文件的制作
    如果,你有写好的模板文件希望与大家分享,欢迎联系我!~~(我的博客和联系方式在文件的最前和最后都可以看到~
    1)简单纯静态文字模板的制作
        a)首先,你需要选择你要制作的模板文件类型,例如为html格式,任意起个名字为 test_t.html
        b)为你的模板文件选择存放目录,插件支持存放在两种地方
            1.g:template_path/test_t.html
            2.g:template_path/html/test_t.html
            相比来说,第二种比第一种更方便管理,但是第一种却更简单一些,一切看自己的喜欢啦
        c)为你的模板文件写入你要的代码,然后保存。
        OK,上面的步骤已经完成了一个模板文件的制作过程,可以尝试新建/打开一个*.html来测试一下啦
    2)静态文字+脚本的模板的制作
        对这种模板,插件里是有固定的格式来规定脚本要写在那个部分的(不用担心,这部分的代码在执行完毕后会被删除掉,不会被载入的)
        格式是这样的:
        EXE_BEGIN_TEMPLATE
        EXE_END_TEMPLATE
        在这两行的中间就可以写任意的vim脚本,例如singleton.h里面就写了很多这样的脚本:
        EXE_BEGIN_TEMPLATE
        let classname = input(“Please input class name : “)
        if classname =~ ‘^\s*$’
            let classname = “CClass”
        endif
        execute ‘%s/CClass/’.classname.‘/g’
        if !filereadable(expand(“%:t:r”).‘.cpp’)
            execute “new “.expand(“%:t:r”).‘.cpp’
            normal o
            call setline(‘.’,classname.“* “.classname.“::m_ins = NULL;”)
            normal o
            call setline(‘.’,“auto_ptr<”.classname.“> “.classname.“::m_auto_ptr;”)
            normal o
            call setline(‘.’,classname.“::”.classname.“()”)
            normal o
            call setline(‘.’,“{“)
            normal o
            call setline(‘.’,”    m_auto_ptr = auto_ptr<”.classname.“>(this);”)
            normal o
            call setline(‘.’,“}”)
            normal o
            call setline(‘.’,classname.“::~”.classname.“()”)
            normal o
            call setline(‘.’,“{“)
            normal o
            call setline(‘.’,“}”)
            normal o
            call setline(‘.’,classname.“* “.classname.“::Ins()”)
            normal o
            call setline(‘.’,“{“)
            normal o
            call setline(‘.’,”    if ( m_ins == NULL)”)
            normal o
            call setline(‘.’,”        m_ins = new “.classname.“();”)
            normal o
            call setline(‘.’,”    return m_ins;”)
            normal o
            call setline(‘.’,“}”)
            normal o
        endif
        EXE_END_TEMPLATE
        这段脚本配合模板,会先提示你输入类名,然后生成一个标准的单体类(包括.h和.cpp文件),大家可以尝试一下~~
    3)特殊说明
        对于有些模板其中执行脚本,可能会影响到缓冲区中原有的数据,所以插件提供了一种方法:即在新建一个缓冲区中载入模板,然后在copy到原来的缓冲区中。
        如果需要这样的定义,需要在 EXE_BEGIN_TEMPLATE 后面加上一个字段,即:
        EXE_BEGIN_TEMPLATE NEEDNEW
        EXE_END_TEMPLATE
        这样即可.
5.有任何问题,欢迎光临我的博客
http://www.vimer.cn,也欢迎给我发邮件:zny2008@gmail.com / dantezhu@vip.qq.com

另外针对单体类(singleton.h)的生成,专门附图如下:

 load_template0

load_template1

load_template2

load_template3

 

由于load_template插件本身支持个性化各种模板,欢迎大家有好的模板能够互相分享,vimer.cn在这里会给大家提供一个交流的平台。

版权所有,转载请注明出处.http://www.vimer.cn

C++模板的几个应用

C++的模板其实是个挺纠结的东西,用的不好的话,编译的一堆错误够你调到崩溃,但要是用的好呢,又确实非常方便,我们来看看 一.获取数组长度 比如 ...

阅读全文

关于map,vector中数据类型使用模板的问题

众所周知,大名鼎鼎的STL使用大量的模板,但是有时候我们也会面临一些需求,比如map或者vector里的数据类型被定义成模板,但这个时候,用起来就会出现问题。 ...

阅读全文

45则回应给“vimer.cn原创vim(gvim)插件load_template正式发布”

  1. 樂師说道:

    出错-.-…
    处理 D:\AcVim\vimfiles\plugin\load_template.vim 时发生错误:

    第 33 行:

    E121: 未定义的变量: g:vimrc_splitstr

    E15: 无效的表达式: ‘~’.g:vimrc_splitstr.’template_source.vim’

    [回复]

    Dante 回复:

    多谢提醒,实在不好意思,有些变量在vimrc中忘记放到插件里了~~~已经修正欢迎继续提出意见~

    [回复]

  2. 樂師说道:

    挺好用.
    我觉得你可以把默认改为
    let g:template_path =$VIM.’/vimfiles/template/’
    因为别人都喜欢把TEMPLATE放在VIMFILES里了.也不用多定义一个template_path变量,而想改的人自然可以改到别的路径..

    [回复]

    樂師 回复:

    我记得这个貌似可以在WIN和LINUX通用..反正我现在是WIN下没问题..

    [回复]

    Dante 回复:

    嗯啊,已经默认指定了C:/template(linux下是~/template),没有用 $VIM主要是linux下的用户可能并没有权限放在$VIM下~~
    呵呵~~欢迎随时反馈啊~~

    [回复]

    依云 回复:

    我通常这么写:
    if has(“win32″)
    let MRU_File = ‘$VIM/vimfiles/vim_mru_files’
    else
    let MRU_File = ‘~/.vim/vim_mru_files’
    endif

    [回复]

  3. 樂師说道:

    WIN下找不到摸版
    我是在RC里写的.插件里应该要自己写表达式才能找到$VIM.-.-.我的错

    [回复]

    樂師 回复:

    不过输入 LOADTEMP + 类型又能找到..奇怪了.
    之前还不用输就能找到.

    [回复]

    樂師 回复:

    我没在VIMRC里写设置,现在输
    LOADTEMP TYPE 就能找到
    只输LOADTEMP 倒是找不到了.这应该没问题吧?

    [回复]

    樂師 回复:

    如果输入LoadTemplate 就能列出所有type.点数字进入TYPE再选文件就好了,不过我觉得这样就好了,我朋友倒是这样说用的时候老是要看去看看模板文件夹有哪些模板,他的模板类型太多了可能是..

    [回复]

    樂師 回复:

    这个插件太有爱了-.-..支持楼主呀,之前找的一个貌似也是LZ写的吧.好象叫TEMPLATE_LOAD之前一直那个,现在开始用这个了.感觉挺好,因为之前的模板加载都不好用,唯一好用的又要装什么软件在WIN麻烦死,因为偶老是要在LNX和WIN中切换..太感谢LZ了

    [回复]

    Dante 回复:

    呵呵,感谢乐师(我实在打不出繁体……)的支持啊,我之前听了你的建议把默认模板路径改了,所以不用再在vimrc中设置就能默认使用了:
    if is windows
    let the default template directory is $VIM.’\vimfiles\template’
    else if linux or else
    let the default template directory is $HOME.’/.vim/template/’

    关于“只输LOADTEMP 倒是找不到了”这个问题,应该不会的哦,因为实际上调用的都是同一个函数,应该是你新建的文件的filetype为空,或者不匹配吧。比如你要加载cpp模板,试一下打开cpp文件,然后LoadTemplate试一下~~~

    [回复]

    樂師 回复:

    原来如此.!我开始用的TXT,现在用CPP就好了..真牛B…太有爱了这样..

    [回复]

    樂師 回复:

    这样实在是太好了,之前说的请LZ无视吧..

    [回复]

  4. 樂師说道:

    还有你VIM表布页上的
    欢迎来 http:// 来分享你的模板文件,或者直接给我 这句话 我每次点都要手动去空格,你要能改成www.vimer.cn;就不用每次都去空格了,让人会感觉这个网站不存在,开始我也以为是.后来复制了下面的网址又能进了..-.-仔细看才知道原来是这样

    [回复]

    樂師 回复:

    欢迎来 http://www.vimer.cn ;这句..

    [回复]

    Dante 回复:

    咦,奇怪呀,我这里页面上显示是没有空格的呀,我是用IE7和谷歌浏览器,你用的是什么浏览器呀?

    [回复]

    樂師 回复:

    我是用的FIREFOX 因为有VIM模式..所以比较习惯

    [回复]

  5. c3t说道:

    我安楼主的说明,可是输入:LoadTemplate时说
    NO extension or filetype
    我这么设置的
    _vimrc文件是let g:template_path = ‘e:\template’
    就是下载的这个插件里的template文件夹我直接拷贝到E盘DOC和PLUGIN复制到VIm相应文件夹里,请楼主帮忙下,我是VIM7.2

    [回复]

  6. c3t说道:

    :LoadTemplate type输入这个可以出现文件类型选择列表,输入 :LoadTemplate 出现不了

    [回复]

    c3t 回复:

    我说错了,只有是:LoadTemplate +具体类型才能载入模板

    [回复]

    Dante 回复:

    不会哦,应该是你新建的文件没有文件类型,比如你要载入cpp模板,你应该新建或打开一个扩展名为.cpp或.h的文件,如test.cpp

    [回复]

  7. 果然如此说道:

    嗯,博主有没有试过snipmate插件?

    这个插件貌似可以实现load_template的全部功能,而且更黄更暴力一点呢

    [回复]

    Dante 回复:

    呵呵,看过别人用过,但是对他实在提不起兴趣,比如我写for循环,就直接写就好了,不希望有既定的规则来限制我怎么写。
    或者说,我这个插件是轻量级的吧,可能部分功能被别的插件包含了,但是毕竟发展的方向不一样~

    [回复]

    果然如此 回复:

    呵呵,其实我用snipmate完全不是用它来展开for循环之类的,而是来完成博主这个插件所完成的功能。

    snipmate的优点是写起模板来语法更简单,它完全不要求用户懂VIM脚本,snipmate插件本身为模板提供了一个更简单的语法。并且光标位置可以在多个位置切换,回退。博主如果觉得Snipmate不太好,也可以试试jptemplate,这个插件的思路和博主这个比较像,但也提供了更高层一点模板语法。

    说实话,我觉得有些时候是VIM社区管理得不太好,网站也维护得很烂,插件的搜索非常困难,一个关键字下去,经常搜不到相关功能的插件,除非你准确知道那个插件的名字才能找到。这直接导致我们这些Vimmer们总是在不断重复发明轮子。现在VIM.org上已经有数不清的模板啦snip之类的插件了。我介绍一下我的悲惨经历吧,在最早是用code_complete, 功能我觉得不太完善,然后自己硬着头皮查手册改,加功能,做了大约一周,正沾沾自喜,偶然地发现了jptemplate,跟自己的一比,我靠,差距太大了,肠子都悔青了,早知道直接用人家的就好了。后来又碰到了Snipmate,感觉更合我的口味,又换了过去。

    说得有点多了,也有点偏了。博主自己写插件为VIM社区贡献,我本不该废话,只是我是觉得稍微有点重复发明轮子,希望别见怪哈~

    [回复]

    Dante 回复:

    呃,看来我对Snipmate有些误解啦,呵呵,正好过年,我抽时间好好看看~~
    正沾沾自喜,偶然地发现了jptemplate,跟自己的一比,我靠,差距太大了,肠子都悔青了

    这种感觉我也遇到过,那个郁闷啊,呵呵,本来的成就完全化为泡影……

    确实linux推崇不要重复发明轮子(变态的emacs除外……),我好好研究一下哈~~

    [回复]

  8. 果然如此说道:

    呵呵~
    我在发帖之前很矛盾,因为总觉得有点打击博主热情之嫌,没有误会就好~

    还有,祝博主新春快乐~O(∩_∩)O~

    [回复]

    Dante 回复:

    呵呵,过年刚回来,刚能上网,新年快乐~~

    [回复]

  9. Ricky说道:

    建议多定义一些用户变量,比如
    g:T_AUTHOR
    g:T_AUTHOR_EMAIL
    g:T_AUTHOR_WEBSITE
    g:T_LICENSE
    g:T_FILENAME
    g:T_CREATE_DATE
    g:T_CURSOR
    这样在插件里默认替换掉,而不需要在每个模板里都加入一些代码去进行这样的替换

    [回复]

  10. linuxphp说道:

    楼主你好, 首先非常感谢你提供了这么一个强悍的插件,我遇到了问题:
    我是VIM7.2, 插件在WINDOWS下工作完全正常,可是在LINUX下,总是提示: no template file found….

    ==========
    请帮忙看下是什么原因?

    [回复]

    Dante 回复:

    这个插件默认在linux下会默认到~/.vim/template/下搜索模板文件,你应该是没有放对路径。
    另外虽然这个插件是我写的,但是其实我更推荐用一下snipmate这个插件,不重复造轮子了~~

    [回复]

    linuxphp 回复:

    如楼主所言, 已经解决, 万分感谢~

    [回复]

  11. Xiao Ta说道:

    原來作者是這裏啊.
    非常好用的插件,很喜歡,但是能不能setf文件類型後也能讀取模板呢?習慣vim創建文件了.發現setf 指定文件類型後不能LoadTemplate
    期待下個版本進化

    [回复]

  12. 朱健强说道:

    我觉得load_template与snipmate这类插件还是有分别的,snipmate主力是小型的片段,如for结构等,但load_template则是大模板。

    我猜snipmate会把所有用到的片段都载入内存,若真是这样的话,载入大量的大模板是不实际的,而load_template刚好能解决这个问题——只在需要时加载。

    所谓的大模板,就是几十k的文件,比如CMS网站后台的添删修及列表模板。

    [回复]

  13. MiChael说道:

    你好,,楼主我这么用不了Html的引用呢?我包都加进去了,还是不行?求帮忙。。。谢谢!

    [回复]

    Dante 回复:

    呃,这个你这样说我也不知道哪有问题的。。不过鉴于目前已经有很多类似的插件,如sinpmate,本着不重复造轮子的原则,所以这个插件已经不维护了,可以去试试snipmate~

    [回复]

  14. Dugi Guides说道:

    I’m not certain in case you would be interested, but do you do link exchanges? I really like your internet site and I feel we could both advantage from an exchange.

    [回复]

  15. mmplayer说道:

    不错的插件我试一下

    [回复]

  16. 夏尔说道:

    我使用你的这个插件出现啦一个问题,windows可以正常使用,但是在linux下,vim 打开提示表达式无效

    input 这个表达式不能识别,不是编辑器命令

    [回复]

    Dante 回复:

    额,应该不会哈,我在windows下也经常用的,是不是win的版本太低了?

    [回复]

  17. 咄咄说道:

    处理 g:\Program Files\Vim\vim73\plugin\load_template.vim
    时发生错误:

    第 129 行:

    E122: 函数 LoadTemplate 已存在,请加 ! 强制替换

    这是为什么呢?
    by the way
    博主给力啊 你的帖子们太棒了

    [回复]

    Dante 回复:

    哈哈,过奖~
    嗯,你是手工重新加载过插件吗?

    [回复]

    咄咄 回复:

    我就是把load_template.zip解压之后的文件夹们直接粘贴到我vim的目录下了

    [回复]

    Dante 回复:

    呃,奇怪,按理说没有问题才对,报这个错是说加载了两次,之前代码没考虑过加载两次的情况。。

    [回复]

    咄咄 回复:

    额 我知道了 我在vim和vimfiles里面都粘贴过 把vimfiles里面的删掉之后就没事儿了

    [回复]

发表评论