Big Sky :: ファイルタイプ別にテンプレートを選べるsonictemplate-vim書いた
Emacsだと、yasnippetを使えば同様のことができます。Vimでも yasnippetが
あるらしいので、それでできないのかなとも思ったんだけど、使い勝手が
違うのかな?
.pmならこれ、.plならこれと一択の場合は auto-insertを使う手もあるので、
その場合はこちらに詳しく記されています。
モジュール用のスニペット
#name : Perl Package Template
# --
package ${1:`(yas/perl-package-name)`};
use strict;
use warnings;
$0
1;
__END__
ドキュメント付きモジュールスニペット
#name : Perl Package Template with Document
# --
package ${1:`(yas/perl-package-name)`};
use strict;
use warnings;
$0
1;
__END__
=head1 NAME
$1 -
=head1 SYNOPSIS
=head1 DESCRIPTION
$1 is
=head1 AUTHOR
Syohei YOSHIDA E<lt>syohex@gmail.comE<gt>
=head1 COPYRIGHT
Copyright `(format-time-string "%Y")` - Syohei YOSHIDA
=head1 SEE ALSO
=head1 LICENSE
This library is free software; you can redistribute it and/or modify
it under the same terms as Perl itself.
=cutyas/perl-package-nameというのは以下のような関数です。
(defun yas/perl-package-name ()
(let ((file-path (file-name-sans-extension (buffer-file-name))))
(if (string-match "lib/" file-path)
(replace-regexp-in-string "/" "::"
(car (last (split-string file-path "/lib/"))))
(file-name-nondirectory file-path))))スニペットを共有する場合、オリジナルのユーティリティ関数を使わずに、
すべて埋め込んだ方が良いと思います。elispを普通に埋め込むことができる
のは強力な機能ですね。
上記のファイルを
- tmpl.script
- tmpl.package
- tmpl.package_with_doc
というような感じで yasnippetの perl-mode以下に設置すると以下のように
使えます。
'tmpl'と打ち込みトリガーキーを押す(デフォルトは "TAB")をスニペットを選ぶ.

目的のスニペットを選択し、決定.

こんな具合です。