VSCode:カスタマイズしたC言語のひな型をサッと出したい

Visual Studio Codeのロゴ プログラミング関連

Visual Studio Codeにはユーザースニペットという拡張子に応じてコードを自動的に挿入してくれる機能があります。これをカスタマイズすると#include <stdio.h> int main()…などのC言語ひな型をサッと挿入できます。

マイクロソフトのC/C++という機能拡張をインストールするとmain入力の後にTABキーで自動的にC言語のひな型を挿入してくれるのですが、#include <stdio.h>などがなく自分の使いたいものではなかったのでこの記事を書きました。
ちなみにスニペット(snippet)とは、英語で文章の小片を意味しています。

C言語のユーザースニペットを登録する

適当な名前で空のC言語ファイルを作っておきます。

ファイル > ユーザー設定 > ユーザースニペットの構成 を選択します。

表示されたスニペットリストの中から c.json (C) を選択します。

初めて作成する場合は、このようなコメント文のJSON形式ファイルが表示されます。

実はこのコメントが記述方法の説明になっているのですが、日本人なので日本語で説明します。

例として以下のC言語ひな型をcmain と入力の後TABキーで挿入する場合を考えます。
その際、カーソルの初期位置は、int main(void)のすぐ下(4行目)のタブを1文字挿入した後ろの位置とします。

ひな型イメージ

c.jsonファイルには以下のように記述します。(初期状態のコメント文含め全体を示します)

{
	// Place your snippets for c 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"
	// }	
	"C main Function": {
		"prefix": "cmain",
		"body": [
			"#include <stdio.h>",
			"",
			"int main(void){",
			"\t$0",
			"",
			"\treturn 0;",
			"}"
		],
		"description": "C言語ひな型"
	}
}

c.json上書き保存します。

先ほど作成した空のC言語ファイル上で、

cmain

と入力してみてください。

登録したユーザースニペットが動作し、候補が表示されます。TABキーを押します。

C言語ひな型のソースコードが挿入され、カーソルが4行目のTAB位置で点滅していれば成功です!

今回は、拡張子が~.cの場合のユーザースニペットを作成しましたが、他のプログラミング言語でも作成方法は同じです。

ちなみにスニペットを呼び出す際の文字列(今回はcmainとした)をトリガーと呼びます。
引き金ですね!

ユーザースニペットファイルの解説

コメント文を翻訳すればだいたい意味が分かります。(笑)

要素bodyの文字列としてTABを直接入力しても構いませんが、VSCodeで警告がうるさいので、エスケープ文字\tを使う方がいいでしょう。$0は最終的なカーソル位置なので利用することは多いと思います。

要素意味
先頭の文字列ユーザースニペット名称
prefixスニペットを呼び出すときの文字列
body[“xxx”, “xxx”, “”, ….]で配列で指定する。要素1つがスニペットの1行に対応する

主な特殊文字
 $0:最終的なカーソル位置
 \tTAB挿入
descriptionスニペットの説明文。何でも良い

コメント

タイトルとURLをコピーしました