Skip to content


Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
This branch is 12 commits ahead, 98 commits behind mustache:master.

Latest commit


Git stats


Failed to load latest commit information.
Latest commit message
Commit time

spacebars and mustache and handlebars mode for vim

This is a fork of vim-mustache-handlebars adapted for Spacebars. In addition to the corrected syntax this fork also has folds defined and the correct indentation is in plans.


The Readme of the original is following. For installation details, be sure to use the git-url of this fork (git:// and the name Slava/vim-spacebars if you use Bundle/NeoBundle/Vundle.

A vim plugin for working with mustache and handlebars templates. It has:

  • syntax highlighting
  • matchit support
  • mustache abbreviations (optional)
  • section movement mappings [[ and ]]
  • text objects ie (inside element) and ae (around element)

Note: for compatibility reason #7, we've renamed the repo name from vim-mode to vim-mustache-handlebars.

Install for pathogen

cd ~/.vim/
git submodule add git:// bundle/mustache
vim bundle/mustache/example.mustache

Get pathogen.

Install for vundle

Add Bundle 'mustache/vim-mustache-handlebars' to your .vimrc and do a :BundleInstall.

Manually Install

cd ~/.local/src
git clone git:// mustache.vim
cp -R mustache.vim/syntax/* ~/.vim/syntax/
cp -R mustache.vim/ftdetect/* ~/.vim/ftdetect/
cp -R mustache.vim/ftplugin/* ~/.vim/ftplugin/
vim mustache.vim/example.mustache

Mustache Abbreviations

You can activate mustache abbreviations by putting this line in your .vimrc: let g:mustache_abbreviations = 1

Now you get a set of convenient abbreviations. Underscore _ indicates where your cursor ends up after typing an abbreviation:

  • {{ => {{_}}

  • {{{ => {{{_}}}

  • {{! => {{!_}}

  • {{> => {{>_}}

  • {{< => {{<_}}

  • {{# produces

    {{# _}}
  • {{if produces

    {{#if _}}
  • {{ife produces

    {{#if _}}

Section movement mappings

Following the vim convention of jumping from section to section, [[ and ]] mappings are implemented for easier movement between mustache tags.

  • ]] jumps to the first following tag
  • [[ jumps to the first previous tag

Count with section movements is supported:

  • 2]] jumps to the second next tag

Text objects

Vim has a very powerful concept of "text objects". If you aren't using text objects, you can get familiar with it on this vim help link. Learning text objects really speeds up the vim workflow.

In that spirit, this plugin defines 2 text objects:

  • ie a mnemonic for inside element, selects all the text inside the mustache tag. For example, when used with vie it will visually select the bold text in the following snippets: {{some_variable}}, {{{different_variable}}}.
  • ae a mnemonic for around element, selects the whole mustache tag, including the curly braces. Example, vae visually selects the bold text in the following snippets: {{some_variable}} or {{{another_variable}}}.

Here are other usage examples:

  • dae - deletes the whole mustache tag, including the curly braces
  • die - deletes *inside the mustache tag, leaving only curly braces
  • yae - "yanks" the whole mustache tag - with curly braces
  • cie - deletes inside the mustache tag and goes in insert mode


This is combined work from juvenn/mustache.vim and nono/vim-handlebars.

Thanks @5long for adding matchit support.

You're encouraged to propose ideas or have discussions via github issues.


spacebars, mustache and handlebars mode for vim






No releases published


No packages published


  • Vim Script 100.0%