CatalystとTT用snippetsEmu.vim設定
最近のお気に入りVimプラグインはsnippetsEmu.vimなんだけど、色々といじってる割に晒してなかったのでいまさらながら晒してみる。
動作画面はこんなかんじ。
http://spiritloose.googlepages.com/catalyst_snippets.htm
(TTYShareはなぜかうまく再生されなかったので泣く泣くWink)
まずCatalyst用。
exec "Snippet debug $c->log->debug('".st."name".et.": '. \$".st."var".et.");<CR>".st.et exec "Snippet warn $c->log->warn('".st."name".et.": '. \$".st."var".et.");<CR>".st.et exec "Snippet dumper $c->log->dumper('".st."name".et.": '. \$".st."var".et.");<CR>".st.et exec "Snippet model $c->model('".st."model".et."')".st.et exec "Snippet view $c->view('".st."model".et."')".st.et exec "Snippet config $c->config->{".st."name".et."}".st.et exec "Snippet controller sub ".st."func".et." : ".st."Attribute".et." {<CR>my ($self, $c) = @_;<CR>".st.et."<CR>}<CR>".st.et exec "Snippet begin sub begin : Private {<CR>my ($self, $c) = @_;<CR>".st.et."<CR>1;<CR>}<CR>".st.et exec "Snippet auto sub auto : Private {<CR>my ($self, $c) = @_;<CR>".st.et."<CR>1;<CR>}<CR>".st.et exec "Snippet detach $c->detach('".st."name".et."');<CR>".st.et exec "Snippet forward $c->forward('".st."name".et."');<CR>".st.et exec "Snippet stash $c->stash->{".st."var".et."}".st.et exec "Snippet flash $c->flash->{".st."var".et."}".st.et exec "Snippet session $c->session->{".st."var".et."}".st.et exec "Snippet sstash $c->stash->{".st."var".et."} = ".st.et.";<CR>".st.et exec "Snippet sflash $c->flash->{".st."var".et."} = ".st.et.";<CR>".st.et exec "Snippet ssession $c->session->{".st."var".et."} = ".st.et.";<CR>".st.et exec "Snippet rs $c->model('DBIC::".st."Source".et."')".st.et exec "Snippet redirect $c->res->redirect($c->uri_for('".st."uri".et."'));<CR>".st.et exec "Snippet param $c->req->param('".st."param".et."')".st.et
まぁ・・・なにも言うことはないか。
ソース嫁ってことで。
ちなみにPerl用。
exec "Snippet dump use Data::Dumper; warn Dumper ".st."var".et.";<CR>".st.et exec "Snippet say print ".st."var".et.", \"\\n\";<CR>".st.et exec "Snippet self my \$self = shift;<CR>".st.et exec "Snippet data my \$data = do { local $/; <DATA> };<CR>".st.et exec "Snippet argf while (<>) {<CR>chomp;<CR>".st.et."<CR>}<CR>".st.et exec "Snippet isa if (blessed $".st."var".et." and $".st."var".et."->isa('".st."Class".et."')) {<CR>".st.et."<CR>}<CR>".st.et exec "Snippet readtsv use IO::File;<CR>use Text::CSV_XS;<CR><CR>my \$fh = IO::File->new('".st."filename".et."') or die 'cannot open file.';<CR>my \$csv = Text::CSV_XS->new({ sep_char => \"\\t\", binary => 1 });<CR>until ($fh->eof) {<CR>my $cols = $csv->getline($fh);<CR>unless ($cols) {<CR>warn $csv->error_diag;<CR>next;<CR>}<CR>my (".st.et.") = @$cols;<CR>}<CR>$fh->close;<CR>".st.et " Class-C3 exec "Snippet next $self->next::method(@_);<CR>".st.et exec "Snippet maybe $self->maybe::next::method(@_);<CR>".st.et
dump
use Data::Dumper; warn Dumper $var;
とか、self
my $self = shift;
とか、data
my $data = do { local $/; <DATA> };
とか、argf
while (<>) { chomp; }
とかそんなの。
readtsvとかはたまに使う。
set filetype=catalyst
とかしてないので、上のやつをperl_snippets.vimに貼り付ける。
Perl全体で有効になっちゃうけど、あんまり問題にはならないと思う。
そんで、便利なのがTT用。これは結構便利。
tt2_snippets.vim
exec "Snippet class [% USE ".st."class".et." = Class('".st."ClassName".et."') %]<CR>".st.et exec "Snippet url [% USE ".st."name".et." = url('".st."path".et."') %]<CR>".st.et exec "Snippet linkto <a href=\"[% c.uri_for('".st."path".et."', "st."param".et.") %]\">".st."label".et."</a>".st.et exec "Snippet if [% IF ".st."condition".et." -%]<CR>".st.et."<CR>[% END -%]<CR>".st.et exec "Snippet ife [% IF ".st."condition".et." -%]<CR>".st.et."<CR>[% ELSE -%]<CR>".st.et."<CR>[% END -%]<CR>".st.et exec "Snippet ifee [% IF ".st."condition1".et." -%]<CR>".st.et."<CR>[% ELSIF ".st."condition2".et." -%]<CR>".st.et."<CR>[% ELSE -%]<CR>".st.et."<CR>[% END -%]<CR>".st.et exec "Snippet unless [% UNLESS ".st."condition".et." -%]<CR>".st.et."<CR>[% END -%]<CR>".st.et exec "Snippet for [% FOR ".st."var".et." = ".st."list".et." %]<CR>".st.et."<CR>[% END -%]<CR>".st.et exec "Snippet foreach [% FOREACH ".st."var".et." = ".st."list".et." %]<CR>".st.et."<CR>[% END -%]<CR>".st.et exec "Snippet while [% WHILE (".st."var".et." = ".st."rs".et.".next) -%]<CR>".st.et."<CR>[% END -%]<CR>".st.et exec "Snippet switch [% SWITCH ".st."var".et." -%]<CR>".st.et."<CR>[% END -%]<CR>".st.et exec "Snippet case [% CASE ".st."var".et." -%]<CR>".st.et."<CR>".st.et exec "Snippet include [% INCLUDE '".st."file".et."' %]<CR>".st.et exec "Snippet process [% PROCESS '".st."file".et."' %]<CR>".st.et exec "Snippet macro [% MACRO ".st."name".et."(".st."arg".et.") BLOCK %]<CR>".st.et."<CR>[% END %]<CR>".st.et exec "Snippet var [% ".st."var".et." %]".st.et exec "Snippet hvar [% ".st."var".et." | html %]".st.et exec "Snippet hlvar [% ".st."var".et." | html | html_line_break %]".st.et exec "Snippet null [%- FILTER null -%]<CR>".st.et."<CR>[%- END -%]<CR>".st.et
tt2html_snippets.vim
if !exists('loaded_snippet') || &cp finish endif runtime! after/ftplugin/tt2_snippets.vim runtime! after/ftplugin/html_snippets.vim
全部あわせると16%ぐらい作業効率UPになってるはず。
snippetsEnu.vim便利!
他によく使ってるファイルタイプはRubyとCとC++だけど、そっちはインデントとか調整したりもろもろ。
GNUスタイル好きじゃない・・・