zsh/vim/bundle/vim-template/README.rst

167 lines
4.9 KiB
ReStructuredText

=============================
Simple Vim templates plugin
=============================
:Author: Adrian Perez <aperez@igalia.com>
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.
Installation
============
The easiest way to install the plugin is to install it as a bundle.
For example, using Pathogen__:
1. Get and install `pathogen.vim <_Pathogen>`__. You can skip this step
if you already have it installed.
2. ``cd ~/.vim/bundle``
3. ``git clone git://github.com/aperezdc/vim-template.git``
__ https://github.com/tpope/vim-pathogen
Bundle installs are known to work fine also when using Vundle__. Other
bundle managers are expected to work as well.
__ https://github.com/gmarik/vundle
Updating
========
Manually
--------
In order to update the plugin, go to its bundle directory and use
Git to update it:
1. ``cd ~/.vim/bundle/vim-template``
2. ``git pull``
With Vundle
-----------
Use the ``:BundleUpdate`` command provided by Vundle, for example invoking
Vim like this::
% vim +BundleUpdate
Configuration
=============
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_directory = '/path/to/directory'`` to specify a directory
from where to search for additional global templates. See `template search
order`_ below for more details. This can also be a list of paths.
* ``let g:templates_name_prefix = '.vimtemplate.'`` to change the name of the
template files that are searched.
* ``let g:templates_global_name_prefix = 'template:'`` to change the prefix of the
templates in the global template directory.
* ``let g:templates_debug = 1`` to have vim-template output debug information
* ``let g:templates_fuzzy_start = 1`` to be able to name templates with
implicit fuzzy matching at the start of a template name. For example a
template file named ``template:.c`` would match ``test.cpp``.
* ``let g:templates_tr_in = [ '.', '_', '?' ]`` and
``let g:templates_tr_out = [ '\.', '.*', '\?' ]`` would allow you to change
how template names are interpretted as regular expressions for matching file
names. This might be helpful if hacking on a windows box where ``*`` is not
allowed in file names. The above configuration, for example, treates
underscores ``_`` as the typical regex wildcard ``.*``.
* ``let g:templates_no_builtin_templates = 1`` to disable usage of the
built-in templates. See `template search order`_ below for more details.
Usage
=====
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 matching the pattern ``*.foo``. E.g. from within Vim::
:Template *.c
Template search order
---------------------
The algorithm to search for templates works like this:
1. A file named ``.vim-template:<pattern>`` 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=<pattern>`` file from the directory specified
using the ``g:templates_directory`` option (only if the option is defined
and the directory exists).
3. Try to use the ``=template=<pattern>`` file supplied with the plugin (only
if ``g:templates_no_builtin_templates`` was not defined).
Variables in templates
----------------------
The following variables will be expanded in templates:
``%DAY%``, ``%YEAR%``, ``%MONTH%``
Numerical day of the month, year and month.
``%DATE%``
Date in ``YYYY-mm-dd`` format
``%TIME%``
Time in ``HH:MM`` format
``%FDATE%``
Full date (date + time), in ``YYYY-mm-dd HH:MM`` format.
``%FILE%``
File name, without extension.
``%FFILE%``
File name, with extension.
``%EXT%``
File extension.
``%MAIL%``
Current user's e-mail address. May be overriden by defining ``g:email``.
``%USER%``
Current logged-in user name. May be overriden by defining ``g:username``.
``%HOST%``
Host name.
``%GUARD%``
A string with alphanumeric characters and underscores, suitable for use
in proprocessor guards for C/C++/Objective-C header files.
``%CLASS%``
File name, without extension, and the first character of every word is
capital
``%MACROCLASS%``
File name, without extension, and all characters are capitals.
``%CAMELCLASS%``
File name, without extension, the first character of every word is capital,
and all underscores are removed.
``%HERE%``
Expands to nothing, but ensures that the cursor will be placed in its
position after expanding the template.