この記事は, 「Perl Advent Calendar 2017」の23日目の記事です.
昨日は, @magnolia_k_さんの「ビルドツールの裏側にいるMakefileを覗いてみる 」でした.
VimにおけるPerl関連のスニペットを晒してみる
あと30分で12月24日ですが, まだ23日の記事が開いてそうだったので, 折角なので小ネタで埋めようと思います. 大きめのネタにしなかったのは, 24日のPerl Advent Calendarも担当しているからです.
...さて, 去年このような記事を書きました:
日頃, Perlを書く時は(というか何かしらコードを書く時は)Vimでコーディングをしていますが, その時に使っているスニペットを紹介した記事です. この記事では, あれから1年以上が経過した, 今現在のVimにおけるPerl関連のスニペットをご紹介します.
snippet u use strict; use warnings; use utf8; ${0} snippet env #!/usr/bin/env perl use strict; use warnings; use utf8; ${0} snippet pkg package `expand('%:p:s?.*lib/??:r:gs?/?::?')`; use strict; use warnings; use utf8; ${0} 1; snippet dw use DDP { deparse => 1, use_prototypes => 0 }; DDP::p ${0} snippet slurp open my $fh, '<', ${0} or die "failed to open file: $!"; my $content = do { local $/; <$fh> };
...だいぶシンプルになりました. 数ヶ月前にvimrcの大掃除をしたので, その時に余り使わないスニペットは消してしまった, というのもあります.
- スクリプトを書く時は
u
ないしはenv
でuse strict
やuse warnings
などを一括で挿入 - ライブラリを書く時は,
pkg
でuse strict
,use warnings
などに加えて,package
も一括で挿入 - Printデバッグをする時は,
dw
でData::Printer(DDP)を挿入 - Path::Tinyなどを使わずにファイルを読み込みたいときは,
slurp
でファイルを一気に読み込んで, 変数に代入するコードを挿入
...という感じに使っています.
SirVer/ultisnips
pkg
のスニペットについては, SirVer/ultisnipsを使っています.
このプラグインを使って, 上記のようなスニペットにしておけば, 例えばlib/Foo/Bar
というディレクトリで, 新たにBaz.pm
を作り, そこでpkg
のスニペットを展開すると, このようになります.
package Foo::Bar::Baz; use strict; use warnings; use utf8; 1;
現在のパスから, package
の部分をいい感じに補完してくれて, 非常に便利です(ちなみにこの設定は id:masawada さんのvimrcから拝借したものです, ありがとうございます).
まとめ
Vimを使っている時によく使っているPerl関連のスニペットと, そこで利用しているSirVer/ultisnipsを紹介しました. 他にも「これがあると捗るよ!」といった, 便利なスニペットがあれば, 是非ブログなどで紹介してもらえると嬉しいです!