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) andae
(around element)
Note: for compatibility reason #7, we've renamed the repo name from
vim-mode
to vim-mustache-handlebars
.
cd ~/.vim/
git clone git://github.com/mustache/vim-mustache-handlebars.git bundle/mustache
vim bundle/mustache/example.mustache
Get pathogen.
Add Plugin 'mustache/vim-mustache-handlebars'
to your .vimrc
and do a
:PluginInstall
.
cd ~/.local/src
git clone git://github.com/mustache/vim-mustache-handlebars.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
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 _}} {{/if}}
-
{{ife
produces{{#if _}} {{else}} {{/if}}
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
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 forinside element
, selects all the text inside the mustache tag. For example, when used withvie
it will visually select the bold text in the following snippets: {{some_variable}}, {{{different_variable}}}.ae
a mnemonic foraround 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 bracesdie
- deletes inside the mustache tag, leaving only curly bracesyae
- "yanks" the whole mustache tag - with curly bracescie
- deletes inside the mustache tag and goes in insert mode
ie
and ae
text objects are enabled by default. To disable them, put the
following in your .vimrc
:
let g:mustache_operators = 0
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.