我用vim开发ruby on rails好久了。因为rails.vim和rails自身generator的强大,一直没有意识到vim中template的欠缺。直到最近在不断的写rake任务,才发现需要一个好的template plugin。
最后我在[url=http://www.vim.org/scripts/script.php?script_id=1160]tSkeleton[/url]和[url=http://www.vim.org/scripts/script.php?script_id=1808]Vimplate[/url]中选择。tSkeleton使用了tlib.vim这个plugin,而Vimplate采用了perl的Template Toolkit。所以从扩展性上讲,Vimplate应该更胜一筹。
于是安装Template Tooklit,编写rake任务的template。可惜perl还不太熟悉,vim函数也不够了解,花了两个多小时才做出来,真是惭愧。
下面贴一下我的rake.template代码和对vimplate.vim做的修改。
最后我在[url=http://www.vim.org/scripts/script.php?script_id=1160]tSkeleton[/url]和[url=http://www.vim.org/scripts/script.php?script_id=1808]Vimplate[/url]中选择。tSkeleton使用了tlib.vim这个plugin,而Vimplate采用了perl的Template Toolkit。所以从扩展性上讲,Vimplate应该更胜一筹。
于是安装Template Tooklit,编写rake任务的template。可惜perl还不太熟悉,vim函数也不够了解,花了两个多小时才做出来,真是惭愧。
下面贴一下我的rake.template代码和对vimplate.vim做的修改。
#vimplate.vim.diff
22c22
< let l:cmd = s:vimplate. " -out=" . l:tmpfile . " -template=" . a:template . " -filename=" . bufname("%")
---
> let l:cmd = s:vimplate. " -out=" . l:tmpfile . " -template=" . a:template
#vimplate.pl.diff
121d120
< 'filename=s',
390d388
< filename => $opt{filename},
#rake.tt
[% PERL -%]
use File::Basename;
my $name = basename($stash->get('filename'), ".rake");
my $path = basename(dirname($stash->get('filename')));
$stash->set('path', $path);
$stash->set('name', $name);
[% END -%]
[% IF path == "." || path == "tasks" -%]
desc ""
task :[% name %], :needs => :environment do
end
[% ELSE -%]
namespace :[% path %] do
desc ""
task :[% name %], :needs => :environment do
end
end
[% END -%]