ルモーリン

VSCodeで使えるPerl用スニペット

投稿:2020-10-21

Perlのサンプルプログラムを書くのに最初の10行はほぼ固定だから楽して入力したい。 使用環境はVSCode(Visual Studio Code)です。 まっさらの*.plファイルを開き、Vim拡張を使っているので入力モードにして「init」と打てば「#!/usr/bin/env」から「$| = 1;」まで全部入ります。

スニペットの機能はこちらの記事を参考にしました。
VsCodeのスニペットのススメ

*.plファイルを開き、VSCodeのメニュー「ファイル|ユーザー設定|ユーザースニペット」を選択、上の欄にperlと入力すれば、perl.jsonが開き、設定を書き込めます。

{
	// Place your snippets for perl here. Each snippet is defined under a snippet name and has a prefix, body and 
	// description. The prefix is what is used to trigger the snippet and the body will be expanded and inserted. Possible variables are:
	// $1, $2 for tab stops, $0 for the final cursor position, and ${1:label}, ${2:another} for placeholders. Placeholders with the 
	// same ids are connected.
	// Example:
	// "Print to console": {
	// 	"prefix": "log",
	// 	"body": [
	// 		"console.log('$1');",
	// 		"$2"
	// 	],
	// 	"description": "Log output to console"
	// }
	"Perlの初期宣言": {
		"prefix": "init",
		"body": [
			"#!/usr/bin/env perl",
			"",
			"use v5.26;",
			"use utf8;",
			"use warnings;",
			"use strict;",
			"",
			"use Encode::Locale;",
			"",
			"use FindBin;",
			"use lib $$FindBin::Bin;", // $が1個ではスニペットの変数になるので2個
			"use MyDumper;",
			"",
			"use feature \"say\";",
			"use open IO => \":utf8\";",
			"",
			"binmode STDOUT, \":encoding(console_out)\";",
			"binmode STDERR, \":encoding(console_out)\";",
			"",
			"$| = 1;", // $の後が記号の場合は変数にならない(2個書くと2個出る)
			"",
			"$1" // スニペットを展開した後のカーソル位置
		],
		"description": "Perlの文字コード指定いろいろ"
	}
}

*.plファイルの中でinitのinまで入力すると候補にinitが表示されます。 上下に選択を移動させてtabで確定すると次のように定型文が入り、カーソルが一番下に移動します。

#!/usr/bin/env perl

use v5.26;
use utf8;
use warnings;
use strict;

use Encode::Locale;

use FindBin;
use lib $FindBin::Bin;
use MyDumper;

use feature "say";
use open IO => ":utf8";

binmode STDOUT, ":encoding(console_out)";
binmode STDERR, ":encoding(console_out)";

$| = 1;