mirror of
				https://github.com/amix/vimrc
				synced 2025-10-31 06:33:35 +08:00 
			
		
		
		
	
		
			
				
	
	
		
			364 lines
		
	
	
		
			4.9 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			364 lines
		
	
	
		
			4.9 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| # #!/usr/bin/perl
 | |
| snippet #!
 | |
| 	#!/usr/bin/env perl
 | |
| 
 | |
| # Hash Pointer
 | |
| snippet .
 | |
| 	 =>
 | |
| # Function
 | |
| snippet sub
 | |
| 	sub ${1:function_name} {
 | |
| 		${0}
 | |
| 	}
 | |
| # Conditional
 | |
| snippet if
 | |
| 	if (${1}) {
 | |
| 		${0}
 | |
| 	}
 | |
| # Conditional if..else
 | |
| snippet ife
 | |
| 	if (${1}) {
 | |
| 		${2}
 | |
| 	}
 | |
| 	else {
 | |
| 		${0}
 | |
| 	}
 | |
| # Conditional if..elsif..else
 | |
| snippet ifee
 | |
| 	if (${1}) {
 | |
| 		${2}
 | |
| 	}
 | |
| 	elsif (${3}) {
 | |
| 		${4:# elsif...}
 | |
| 	}
 | |
| 	else {
 | |
| 		${0}
 | |
| 	}
 | |
| snippet eif
 | |
| 	elsif (${1}) {
 | |
| 		${0}
 | |
| 	}
 | |
| # Conditional One-line
 | |
| snippet xif
 | |
| 	${1:expression} if ${2:condition};
 | |
| # Unless conditional
 | |
| snippet unless
 | |
| 	unless (${1}) {
 | |
| 		${0}
 | |
| 	}
 | |
| # Unless conditional One-line
 | |
| snippet xunless
 | |
| 	${1:expression} unless ${2:condition};
 | |
| # Try/Except
 | |
| snippet eval
 | |
| 	local $@;
 | |
| 	eval {
 | |
| 		${1:# do something risky...}
 | |
| 	};
 | |
| 	if (my $e = $@) {
 | |
| 		${0:# handle failure...}
 | |
| 	}
 | |
| # While Loop
 | |
| snippet wh
 | |
| 	while (${1}) {
 | |
| 		${0}
 | |
| 	}
 | |
| # While Loop One-line
 | |
| snippet xwh
 | |
| 	${1:expression} while ${2:condition};
 | |
| # C-style For Loop
 | |
| snippet cfor
 | |
| 	for (my $${2:var} = 0; $$2 < ${1:count}; $$2${3:++}) {
 | |
| 		${0}
 | |
| 	}
 | |
| # For loop one-line
 | |
| snippet xfor
 | |
| 	${1:expression} for @${2:array};
 | |
| # Foreach Loop
 | |
| snippet for
 | |
| 	foreach my $${1:x} (@${2:array}) {
 | |
| 		${0}
 | |
| 	}
 | |
| # Foreach Loop One-line
 | |
| snippet fore
 | |
| 	${1:expression} foreach @${2:array};
 | |
| # Package
 | |
| snippet package
 | |
| 	package ${1:`expand('%:p:s?.*lib/??:r:gs?/?::?')`};
 | |
| 	use strict;
 | |
| 	use warnings;
 | |
| 
 | |
| 	${0}
 | |
| 
 | |
| 	1;
 | |
| 
 | |
| 	__END__
 | |
| # Package syntax perl >= 5.14
 | |
| snippet packagev514
 | |
| 	package ${1:`expand('%:p:s?.*lib/??:r:gs?/?::?')`} ${2:0.99};
 | |
| 	use v5.14;
 | |
| 	use warnings;
 | |
| 
 | |
| 	${0}
 | |
| 
 | |
| 	1;
 | |
| 
 | |
| 	__END__
 | |
| #moose
 | |
| snippet moose
 | |
| 	use Moose;
 | |
| 	use namespace::autoclean;
 | |
| 	${1:#}BEGIN {extends '${2:ParentClass}'};
 | |
| 
 | |
| 	${0}
 | |
| # parent
 | |
| snippet parent
 | |
| 	use parent qw(${0:Parent Class});
 | |
| # Read File
 | |
| snippet slurp
 | |
| 	my $${1:var} = do { local $/; open my $file, '<', "${2:file}"; <$file> };
 | |
| 	${0}
 | |
| # strict warnings
 | |
| snippet strwar
 | |
| 	use strict;
 | |
| 	use warnings;
 | |
| # older versioning with perlcritic bypass
 | |
| snippet vers
 | |
| 	## no critic
 | |
| 	our $VERSION = '${0:version}';
 | |
| 	eval $VERSION;
 | |
| 	## use critic
 | |
| # new 'switch' like feature
 | |
| snippet switch
 | |
| 	use feature 'switch';
 | |
| 
 | |
| # Anonymous subroutine
 | |
| snippet asub
 | |
| 	sub {
 | |
| 		${0}
 | |
| 	}
 | |
| 
 | |
| 
 | |
| 
 | |
| # Begin block
 | |
| snippet begin
 | |
| 	BEGIN {
 | |
| 		${0}
 | |
| 	}
 | |
| 
 | |
| # call package function with some parameter
 | |
| snippet pkgmv
 | |
| 	__PACKAGE__->${1:package_method}(${0:var})
 | |
| 
 | |
| # call package function without a parameter
 | |
| snippet pkgm
 | |
| 	__PACKAGE__->${0:package_method}()
 | |
| 
 | |
| # call package "get_" function without a parameter
 | |
| snippet pkget
 | |
| 	__PACKAGE__->get_${0:package_method}()
 | |
| 
 | |
| # call package function with a parameter
 | |
| snippet pkgetv
 | |
| 	__PACKAGE__->get_${1:package_method}(${0:var})
 | |
| 
 | |
| # complex regex
 | |
| snippet qrx
 | |
| 	qr/
 | |
| 	     ${0:regex}
 | |
| 	/xms
 | |
| 
 | |
| #simpler regex
 | |
| snippet qr/
 | |
| 	qr/${0:regex}/x
 | |
| 
 | |
| #given
 | |
| snippet given
 | |
| 	given ($${1:var}) {
 | |
| 		${2:# cases}
 | |
| 		${0:# default}
 | |
| 	}
 | |
| 
 | |
| # switch-like case
 | |
| snippet when
 | |
| 	when (${1:case}) {
 | |
| 		${0}
 | |
| 	}
 | |
| 
 | |
| # hash slice
 | |
| snippet hslice
 | |
| 	@{ ${1:hash}  }{ ${0:array} }
 | |
| 
 | |
| 
 | |
| # map
 | |
| snippet map
 | |
| 	map {  ${0: body }    }  ${1: @array } ;
 | |
| 
 | |
| 
 | |
| 
 | |
| # Pod stub
 | |
| snippet ppod
 | |
| 	=head1 NAME
 | |
| 
 | |
| 	${1:ClassName} - ${2:ShortDesc}
 | |
| 
 | |
| 	=head1 SYNOPSIS
 | |
| 
 | |
| 	  use $1;
 | |
| 
 | |
| 	  ${3:# synopsis...}
 | |
| 
 | |
| 	=head1 DESCRIPTION
 | |
| 
 | |
| 	${0:# longer description...}
 | |
| 
 | |
| 
 | |
| 	=head1 INTERFACE
 | |
| 
 | |
| 
 | |
| 	=head1 DEPENDENCIES
 | |
| 
 | |
| 
 | |
| 	=head1 SEE ALSO
 | |
| 
 | |
| 
 | |
| # Heading for a subroutine stub
 | |
| snippet psub
 | |
| 	=head2 ${1:MethodName}
 | |
| 
 | |
| 	${0:Summary....}
 | |
| 
 | |
| # Heading for inline subroutine pod
 | |
| snippet psubi
 | |
| 	=head2 ${1:MethodName}
 | |
| 
 | |
| 	${0:Summary...}
 | |
| 
 | |
| 
 | |
| 	=cut
 | |
| # inline documented subroutine
 | |
| snippet subpod
 | |
| 	=head2 $1
 | |
| 
 | |
| 	Summary of $1
 | |
| 
 | |
| 	=cut
 | |
| 
 | |
| 	sub ${1:subroutine_name} {
 | |
| 		${0}
 | |
| 	}
 | |
| # Subroutine signature
 | |
| snippet parg
 | |
| 	=over 2
 | |
| 
 | |
| 	=item
 | |
| 	Arguments
 | |
| 
 | |
| 
 | |
| 	=over 3
 | |
| 
 | |
| 	=item
 | |
| 	C<${1:DataStructure}>
 | |
| 
 | |
| 	  ${2:Sample}
 | |
| 
 | |
| 
 | |
| 	=back
 | |
| 
 | |
| 
 | |
| 	=item
 | |
| 	Return
 | |
| 
 | |
| 	=over 3
 | |
| 
 | |
| 
 | |
| 	=item
 | |
| 	C<${0:...return data}>
 | |
| 
 | |
| 
 | |
| 	=back
 | |
| 
 | |
| 
 | |
| 	=back
 | |
| 
 | |
| 
 | |
| 
 | |
| # Moose has
 | |
| snippet has
 | |
| 	has ${1:attribute} => (
 | |
| 		is	    => '${2:ro|rw}',
 | |
| 		isa 	=> '${3:Str|Int|HashRef|ArrayRef|etc}',
 | |
| 		default => sub {
 | |
| 			${4:defaultvalue}
 | |
| 		},
 | |
| 		${0:# other attributes}
 | |
| 	);
 | |
| 
 | |
| 
 | |
| # override
 | |
| snippet override
 | |
| 	override ${1:attribute} => sub {
 | |
| 		${2:# my $self = shift;};
 | |
| 		${0:# my ($self, $args) = @_;};
 | |
| 	};
 | |
| 
 | |
| 
 | |
| # use test classes
 | |
| snippet tuse
 | |
| 	use Test::More;
 | |
| 	use Test::Deep; # (); # uncomment to stop prototype errors
 | |
| 	use Test::Exception;
 | |
| 
 | |
| # local test lib
 | |
| snippet tlib
 | |
| 	use lib qw{ ./t/lib };
 | |
| 
 | |
| #test methods
 | |
| snippet tmeths
 | |
| 	$ENV{TEST_METHOD} = '${0:regex}';
 | |
| 
 | |
| # runtestclass
 | |
| snippet trunner
 | |
| 	use ${0:test_class};
 | |
| 	$1->runtests();
 | |
| 
 | |
| # Test::Class-style test
 | |
| snippet tsub
 | |
| 	sub t${1:number}_${2:test_case} :Test(${3:num_of_tests}) {
 | |
| 		my $self = shift;
 | |
| 		${0}
 | |
| 
 | |
| 	}
 | |
| 
 | |
| # Test::Routine-style test
 | |
| snippet trsub
 | |
| 	test ${1:test_name} => { description => '${2:Description of test.}'} => sub {
 | |
| 		my ($self) = @_;
 | |
| 		${0}
 | |
| 	};
 | |
| 
 | |
| #prep test method
 | |
| snippet tprep
 | |
| 	sub prep${1:number}_${2:test_case} :Test(startup) {
 | |
| 		my $self = shift;
 | |
| 		${0}
 | |
| 	}
 | |
| 
 | |
| # cause failures to print stack trace
 | |
| snippet debug_trace
 | |
| 	use Carp; # 'verbose';
 | |
| 	# cloak "die"
 | |
| 	# warn "warning"
 | |
| 	$SIG{'__DIE__'} = sub {
 | |
| 		require Carp; Carp::confess
 | |
| 	};
 | |
| 
 | |
| snippet dump
 | |
| 	use Data::Dump qw(dump);
 | |
| 	warn dump ${1:variable}
 | |
| 
 | |
| snippet subtest
 | |
| 	subtest '${1: test_name}' => sub {
 | |
| 		${2}
 | |
| 	};
 | 
