130 lines
3.8 KiB
Markdown
130 lines
3.8 KiB
Markdown
mustache and handlebars mode for vim
|
|
====================================
|
|
|
|
A vim plugin for working with [mustache][mustache] and
|
|
[handlebars][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 clone git://github.com/mustache/vim-mustache-handlebars.git bundle/mustache
|
|
vim bundle/mustache/example.mustache
|
|
|
|
Get [pathogen][pathogen].
|
|
|
|
### Install for vundle
|
|
|
|
Add `Plugin 'mustache/vim-mustache-handlebars'` to your `.vimrc` and do a
|
|
`:PluginInstall`.
|
|
|
|
### Manually Install
|
|
|
|
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
|
|
|
|
### 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 _}}
|
|
{{/if}}
|
|
```
|
|
- `{{ife` produces
|
|
|
|
```
|
|
{{#if _}}
|
|
{{else}}
|
|
{{/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](http://vimdoc.sourceforge.net/htmldoc/motion.html#text-objects). 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
|
|
|
|
`ie` and `ae` text objects are enabled by default. To disable them, put the
|
|
following in your `.vimrc`:
|
|
|
|
let g:mustache_operators = 0
|
|
|
|
## Maintainers
|
|
|
|
* [Bruno Michel](http://github.com/nono)
|
|
* [Bruno Sutic](http://github.com/bruno-)
|
|
* [Juvenn Woo](http://github.com/juvenn)
|
|
|
|
This is combined work from
|
|
[juvenn/mustache.vim](http://github.com/juvenn/mustache.vim) and
|
|
[nono/vim-handlebars](http://github.com/nono/vim-handlebars).
|
|
|
|
----
|
|
|
|
Thanks [@5long](http://github.com/5long) for adding matchit support.
|
|
|
|
You're encouraged to propose ideas or have discussions via github
|
|
issues.
|
|
|
|
[mustache]: http://mustache.github.io
|
|
[handlebars]: http://handlebarsjs.com
|
|
[pathogen]: https://github.com/tpope/vim-pathogen
|