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とかはたまに使う。


rails.vimみたいに

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スタイル好きじゃない・・・