dotfiles/.vim/doc/sonictemplate-vim.txt

183 lines
5.0 KiB
Plaintext
Raw Normal View History

2012-04-03 01:45:05 +00:00
*sonictemplate-vim.txt* SonicTemplate for Vim
-------------------------------------------------------
SonicTemplate: hi speed coding method
-------------------------------------------------------
Author: Yasuhiro Matsumoto <mattn.jp@gmail.com>
WebSite: http://mattn.kaoriya.net/
Repository: http://github.com/mattn/sonictemplate-vim
Site: http://mattn.github.com/sonictemplate-vim
License: BSD style license
==============================================================================
CONTENTS *sonictemplate-vim-contents*
Introduction |sonictemplate-introduction|
Install |sonictemplate-install|
Tutorial |sonictemplate-tutorial|
Customize |sonictemplate-customize|
Write Your Template |sonictemplate-writetemplate|
==============================================================================
INTRODUCTION *sonictemplate-vim-introduction*
|SonicTemplate| is easy and high speed coding method.
* Choose template for the filetype
* Few typings.
* Flexible customization.
==============================================================================
INSTALL *sonictemplate-vim-install*
Install the distributed files into Vim runtime directory which is usually
~/.vim/, or $HOME/vimfiles on Windows.
If you install pathogen that provided from Tim Pope, you should extract the
file into 'bundle' directory.
==============================================================================
TUTORIAL *sonictemplate-vim-tutorial*
For example, you are writing C++ file.
1. Create main function
Open new C++ file, and type following.
>
:Template boost-main
<
Then you can see following.
>
#include <iostream>
#include <string>
#include <boost/foreach.hpp>
int
main(int argc, char* argv[]) {
_
return 0;
}
<
The cursor is in the position of |_|.
2. Add foreach loop
Type following.
>
:Template boost-for
<
Then you will be asked like following.
>
variable:
<
Then type "foo".
>
#include <iostream>
#include <string>
#include <boost/foreach.hpp>
int
main(int argc, char* argv[]) {
BOOST_FOREACH(auto x, foo) {
_
}
return 0;
}
<
3. Add std::cout << xxx << std::endl;
>
:Template cout
<
Answer "x" for the question "string:".
>
#include <iostream>
#include <string>
#include <boost/foreach.hpp>
int
main(int argc, char* argv[]) {
BOOST_FOREACH(auto x, foo) {
std::cout << x << std::endl;
}
return 0;
}
<
==============================================================================
CUSTOMIZE *sonictemplate-vim-customize*
You can modify template directory for your-self templates.
>
let g:template_vim_template_dir = '/path/to/your/template/directory'
<
==============================================================================
WRITE YOUR TEMPLATE *sonictemplate-vim-writetemplate*
Templates are stored in the directory that "g:sonictemplate_vim_template_dir"
variable specified. On unix, directory structure is following.
Note that I'm using pathogen-vim.
>
~/.vim/bundle/sonictemplate-vim
plugin
sonictemplate.vim
doc
sonictemplate.txt
template
go ... filetype go
base-main.go ... base main
base-package.go ... base package
snip-goroutine.go ... snippet for goroutine
...
perl ... filetype perl
base-package.pl ... base package
base-script.pl ... base script
snip-dbi-connect-sqlite.pl ... snippet for DBI/SQLite
...
1. The filename have following rule.
|[kind]|-|[name]|.|[extension]|
|[kind]| 'base' or 'snip' should be used.
'base' is used when buffer is empty.
|[name]| template name
Words in the name must join with '-'.
|[extension]| file name extension like ".c".
If several extensions are exists in same directory, the first found is used.
2. Template can have some keywords.
|{{_name_}}| the filename without extension.
If you are opening "foo.pl" for perl, {{_name_}} become "foo".
|{{_cursor_}}| : cursor position.
When expanded template, cursor will be moved to there.
|{{_input_:var}}| : ask the value of "var".
When expanded template, cursor will be moved to there.
|{{_expr_:xxx}}| : expression in vimscript.
For example: "Current Time:|{{_expr_:strftime('%c')}}|" will be
>
Current Time: 2011/10/27 20:19:00
<
|{{_if_:expr;foo;bar}}| : ternary operator
For example: When today is saturday,
"Today is |{{_if_:strftime('%w')%6;OrdinaryDay;Holiday}}|" will be
>
Today is Holiday
<
==============================================================================
vim:tw=78:ts=8:ft=help:norl:noet:fen:fdl=0: