TL;DR
-
グローバルスニペットの場合は、
C:\Users\USER\AppData\Roaming\Code\User\snippets
に(任意の名前).code-snippets
を作成する。 -
ワークスペースフォルダスニペットの場合は、
${workspaceFolder}\.vscode\
に(任意の名前).code-snippets
を作成する。 -
特定の言語のみで有効にしたい場合は、
"scope": "任意の言語の名前"
をプロパティに設定する(例:"scope": "python"
)。 -
全ての言語で有効にしたい場合は
"scope"
プロパティを省略する。
はじめに
ユーザースニペットには有効範囲として、
- ワークスペースのみかVSCode全体か
- 特定の言語のみか言語指定なしか
の2個の観点から合わせて4通りの指定方法があります。
「ワークスペースのこの言語だけに適用したいけどどうすればいいの?」
と言った感じになったので、この機会にまとめてみようと思います。
グローバルスニペット
グローバルスニペットは、VSCode内の全体で有効になるスニペットです。
下記の手順:
- F1キーでコマンドパレットを開き『Configure User Snippets』を選択する
- 候補の中から『New Global Snippets file...』を選択する
- ユーザースニペットのファイル名を入力する(今回は
foo
を入力しました)
を実行すると、foo.code-snippetes
という名前のJSONファイルが生成されます。
Windows版だと、
C:\Users\USER\AppData\Roaming\Code\User\snippets
こちらのフォルダ配下にあります。
スニペット内は、以下のような感じで書きます。
{
"MainFunction": {
"scope": "python", // これを省略すると全ての言語で有効になる
"prefix": "fmain",
"body": [
"def main() -> None:",
" $0",
"",
"",
"if __name__ == \"__main__\":",
" main()",
""
],
"description": "Template of main() function"
}
}
ここで注目するのが"scope"
です。
この"scope"
キーで、このスニペットを有効にする範囲を設定できますが、この"scope"
キーは省略が可能です。
なので、すべての言語で有効にしたいときは、このキーを無くすだけでOKですね。
ワークスペースフォルダスニペット
グローバルスニペットと同じ要領で、今回は『New Snippets file for (ワークフォルダ名)』を選択します。
名前を入力すると、${workspaceFolder}\.vscode\
内にスニペットファイルが生成されます。
スニペットファイルの書き方は、グローバルスニペットと全く同じなので省略します。
おわりに
言語指定のグローバルスニペットに関しては、python.json
みたいなファイルを作成することでも可能ですが、今回はなるべく作り方を共通化したかったので省略しました。
(ちなみに、python.json
で作成すると、デフォルトで"scope": "python"
が付く感じです)
書き始めて見たら全然まとまりませんでしたが、参考になれば幸いです。
参考