Skip to content
This repository


Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP

Simple templates plugin for Vim

branch: master

Simple Vim templates plugin

Author: Adrian Perez <>

This is a simple plugin for Vim that will allow you to have a set of templates for certain file types. It is useful to add boilerplate code like guards in C/C++ headers, or license disclaimers.


The easiest way to install the plugin is to install it as a bundle:

  1. Get and install pathogen.vim. You can skip this step if you already have it installed.
  2. cd ~/.vim/bundle
  3. git clone git://


In order to update the plugin, go to the its bundle directory and use Git to update it:

  1. cd ~/.vim/bundle/vim-template
  2. git pull


In your vimrc you can put:

  • let g:templates_plugin_loaded = 1 to skip loading of this plugin.
  • let g:templates_no_autocmd = 1 to disable automatic insertion of template in new files.
  • let g:templates_name_prefix = .vimtemplate. to change the name of the template files that are searched. Note This setting will also affect templates in your global templates directory. TODO: change this behavior?
  • let g:templates_debug = 1 to have vim-template output debug information


There are a number of options to use a template:

  • Create a new file giving it a name. The suffix will be used to determine which template to use. E.g:

    $ vim foo.c
  • In a buffer, use :Template foo to load the template that would be loaded for file with suffix foo. E.g. from within Vim:

    :Template c

Template search order

The algorithm to search for templates works like this:

  1. A file named template.<suffix> in the current directory. If not found, goto (2). If there are multiple template files that match a given suffix in the same directory, the one that is most specific is used.
  2. Go up a directory and goto (1), if not possible, goto (3).
  3. Try to use the template.<suffix> file supplied with the plugin.

Variables in templates

The following variables will be expanded in templates:

Numerical day of the month, year and month.
Date in YYYY-mm-dd format
Time in HH:MM format
Full date (date + time), in YYYY-mm-dd HH:MM format.
File name, without extension.
File name, with extension.
File extension.
Current user's e-mail address. May be overriden by defining g:email.
Current logged-in user name. May be overriden by defining g:username.
Host name.
A string with alphanumeric characters and underscores, suitable for use in proprocessor guards for C/C++/Objective-C header files.
File name, without extension,and the first character of every word is capital
Expands to nothing, but ensures that the cursor will be placed in its position after expanding the template.
Something went wrong with that request. Please try again.