Python の import 部分って色々なスクリプトで使い回すこと多いですよね。
VScodeではよく使うパターン文をユーザースニペットというjsonファイル(Pythonならpython.json
)にあらかじめ定義しておくことで、いちいち該当箇所をコピー&ペーストせずに使えて便利!
なのですが、、そもそもそのjson形式に整形するところ(文字列への"" や区切りの , を追加する)にちょっと煩わしさを感じていました。
そこで、登録したいパターン文を貼り付けるだけでVS Codeのユーザースニペットのjson形式に変換してくれるシェルスクリプトを作成しました(実際には ChatGPT に作ってもらいました笑)。
#!/bin/bash
# prefix and description can be changed as you like
prefix="my_snippet"
description="This is my custom snippet"
# read multiline input from stdin
IFS= read -d '' -r input
# convert input to an array of lines
lines=()
while IFS= read -r line; do
lines+=("$line")
done < <(printf '%s' "$input")
# generate the snippet in JSON format
json=$(jq -n --arg prefix "$prefix" --arg description "$description" --rawfile body <(printf '%s\n' "${lines[@]}") '{
($prefix): {
prefix: $prefix,
body: $body | split("\n"),
description: $description
}
}')
# print the JSON snippet
printf '%s\n' "$json"
このスクリプトは入力としてテキストを受け取り、それをVS Codeのユーザースニペット形式に変換します。変換されたスニペットはJSON形式で出力されます。
このスクリプトを使用するには jq コマンドが必要となります。jqはJSONを操作するためのコマンドラインツールで、多くのLinuxディストリビューションやmacOSで利用できます。
まずchmod 755 ./generate_snippet.sh
でシェルスクリプトに実行権限を与えてあげます。
スクリプトは標準入力からテキストを受け取るので以下のように使用します。
$ ./generate_snippet.sh <<EOF
> # ここに登録したいパターン文を貼り付ける(以下のように複数行もOK)
> import os,sys
> import glob
> import numpy as np
> import matplotlib.pyplot as plt
> EOF # 最後にEOFと打ってエンターを押す
すると以下のようなjson形式に整形された出力されるので、これをコピーしてご自身のVS Codeのユーザースニペットに貼り付けてやればOKです。(prefix
部分等は適宜変更して下さい)
{
"my_snippet": {
"prefix": "my_snippet",
"body": [
"import os,sys",
"import glob",
"import numpy as np",
"import matplotlib.pyplot as plt",
""
],
"description": "This is my custom snippet"
}
}
それでは良いVS Codeライフを〜