vscode snippet ๋งŒ๋“ค๊ธฐ

vscode snippet ๋งŒ๋“ค๊ธฐ#

supposed to be surdarla logo

Surdarla

Nov 21 Tue 13:21, 2023

1 min read

vscode code snippet gif

vscode๋ฅผ ์‚ฌ์šฉํ•˜๋‹ค๋ณด๋ฉด snippet์ด ๊ธฐ๋ณธ์ ์œผ๋กœ ์ œ๊ณต๋˜๊ณ  market์—์„œ๋„ installํ•ด์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์— ์ต์ˆ™ํ•ด์ง€์ง€๋งŒ, ๊ฒฐ๊ตญ ๋‚˜๋งŒ์˜ ์ƒ์‚ฐ์„ฑ์„ ๋†’์ด๊ธฐ ์œ„ํ•ด์„œ๋Š” ๋ณธ์ธ๋งŒ์˜ snippet์„ ๋งŒ๋“œ๋Š” ๊ฒƒ์„ ์•Œ์•„์•ผํ•œ๋‹ค.

๊ธฐ๋ณธ์ ์œผ๋กœ๋Š” built in snippet์ด๋ผ๋Š” ๋‚ด์žฅ ์ฝ”๋“œ ์กฐ๊ฐ์ด ์กด์žฌํ•œ๋‹ค. markdonwn์ด๋‚˜ ์ฝ”๋”ฉ์„ ํ•˜๋‹ค๋ณด๋ฉด ์Šค๋ฆฌ์Šฌ์ฉ ์˜†์—์„œ ์ถ”์ฒœํ•ด ์ฃผ๋Š” ๊ฒƒ์ด ์ด๋Ÿฌํ•œ ๊ฒƒ๋“ค์ด๋‹ค. ์ด๊ฒƒ๋“ค์„ ๋ถˆ๋Ÿฌ์™€ ์‚ฌ์šฉํ•˜๋ ค๋ฉด ctrl,cmd + space๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋œ๋‹ค.

๋‚˜๋งŒ์˜ snippet#

์‚ฌ์šฉ์ž ์ฝ”๋“œ ์กฐ๊ฐ. ์ฆ‰ ๋‚˜๋งŒ์˜ snippet์„ ๋งŒ๋“œ๋Š” ๊ฒƒ์— ๋Œ€ํ•ด์„œ ์•Œ์•„๋ณด์ž. ์‚ฌ์šฉ์ž ์ฝ”๋“œ์กฐ๊ฐ์€ ~.json ํŒŒ์ผ๋กœ ์ƒ์„ฑ๋˜๊ณ  ๊ด€๋ฆฌ๋œ๋‹ค. ๊ธฐ๋ณธ์ ์œผ๋กœ text ํ˜•ํƒœ์˜ ๊ฐ์ฒด๋ฅผ ๋งŒ๋“ค๊ณ  ์ด๋ฅผ ๋ถˆ๋Ÿฌ์˜ค๋Š” ํ˜•์‹์œผ๋กœ json๋งŒํ•œ๊ฒŒ ์—†๊ธฐ ๋•Œ๋ฌธ์ธ ๊ฒƒ์œผ๋กœ ๋ณด์ธ๋‹ค. ๊ทธ๋ฆฌ๊ณ  vscode๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ settings.json์œผ๋กœ ์„ค์ •๋„ ๊ด€๋ฆฌํ•˜๋Š” ๊ฒƒ์„ ๋ณด๋ฉด json์— ๋Œ€ํ•ด์„œ ์•Œ์•„๋†“์œผ๋ฉด ๋‚˜์  ๊ฒƒ์ด ์—†๋‹ค.

F1 \(\rightarrow\) Snippets:Configure User Snippets \(\rightarrow\) new global snippet๋กœ ๋“ค์–ด๊ฐ€์ค€๋‹ค. ๋งŒ์•ฝ markdown์ด๋‚˜ ํŠน์ • ์–ธ์–ด์— ํŠนํ™”๋œ snippet์ด ํ•„์š”ํ•˜๋ฉด ๊ทธ๊ฑธ ๋งŒ๋“ค์–ด ์ฃผ๋ฉด ๋œ๋‹ค.

{
	// Place your global snippets here. Each snippet is defined under a snippet name and has a scope, prefix, body and
	// description. Add comma separated ids of the languages where the snippet is applicable in the scope field. If scope
	// is left empty or omitted, the snippet gets applied to all languages. 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": {
	// 	"scope": "javascript,typescript",
	// 	"prefix": "log",
	// 	"body": [
	// 		"console.log('$1');",
	// 		"$2"
	// 	],
	// 	"description": "Log output to console"
	// }
}

์ด๋Ÿฐ ์‹์œผ๋กœ ๊ธฐ๋ณธ์ ์ธ snippet์ด ๋‚˜์˜จ๋‹ค. ์ฝ์–ด๋ณด๋ฉด ๊ทœ์ •ํ•ด์•ผํ•  ๊ฒƒ์ด ์ด 5๊ฐ€์ง€ ์ •๋„๊ฐ€ ์žˆ๋‹ค.

  1. name : ํ•ด๋‹น snippet์˜ ์ด๋ฆ„, suggestion์— ํ‘œ์‹œ

  2. scope : markdown, js, java ๋“ฑ ์–ธ์–ด

  3. prefix : ctrl,cmd + space๋ฅผ ์‚ฌ์šฉ์‹œ ์–ด๋–ค ๋‹จ์ถ•์–ด๋กœ ์ฐพ์„์ง€

  4. body : ๋‚ด์šฉ

  5. description : ํ•ด๋‹น snippet์— ๋Œ€ํ•œ ์„ค๋ช…

์œ„์™€ ๊ฐ™์€ ๊ฒƒ๋“ค์„ ์ž…๋ ฅํ•˜๋ฉด ๋œ๋‹ค. ๋‹ค๋ฅธ ๋ถ€๋ถ„์€ ์–ด๋ ค์šธ ๊ฒƒ์ด ์—†๋Š”๋ฐ body๋ถ€๋ถ„ ์ž…๋ ฅ์— ์žˆ์–ด์„œ ๋ช‡ ๊ฐ€์ง€ ์•Œ์•„์•ผ ํ•  ๊ฒƒ์ด ์žˆ๋‹ค.

body ์ž…๋ ฅ syntax#

	"basic snippet" : {
		"scope" : "\"${0:language}\"",
		"prefix" : ["snippet"],
		"body" : ["\"${1:title}\" : {",
					"\t\"prefix\" : [\"$2\"],",
					"\t\"body\" : [\"$3\"],",
					"\t\"description\" : \"$4\"",
					"}"
					],
		"description" : "basic snippet"
	},

json์•ˆ์—์„œ ๋˜ ํŽธํ•˜๊ฒŒ ์“ฐ๊ธฐ ์œ„ํ•ด์„œ ํ•ด๋‹น snippet์•ˆ์—์„œ ์‚ฌ์šฉํ•  snippet์„ ๋งŒ๋“ค์–ด ๋ณด์•˜๋‹ค. ์ด๋ฅผ ๋ณด๋ฉด ์•Œ ์ˆ˜ ์žˆ๋“ฏ์ด ๋ฌด์กฐ๊ฑด ์Œ๋”ฐ์˜ดํ‘œ๋ฅผ ์‚ฌ์šฉํ•ด์ค˜์•ผํ•œ๋‹ค. ๊ทธ๊ฒƒ์„ ์œ„ํ•ด์„œ ์ „๋ถ€ "\ ์ด๋Ÿฐ์‹์œผ๋กœ ์‚ฌ์šฉํ•œ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ค„๋ฐ”๊ฟˆ์„ ํ•˜๋ ค๋ฉด "", ์™€ ๊ฐ™์€ ์‹์œผ๋กœ ํ•ด์ฃผ๊ณ  tab์ด ํ•„์š”ํ•  ๊ฒฝ์šฐ์—๋Š” \t๋กœ ์‚ฌ์šฉํ•ด์ค€๋‹ค.

๊ทธ๋ฆฌ๊ณ  placeholder๊ฐ€ ์กด์žฌํ•˜๋Š”๋ฐ $~~ ์ด๋Ÿฐ์‹์œผ๋กœ ํ‘œ๊ธฐ๋œ ๊ฒƒ์ด๋‹ค.

  1. $1๋Š” ๋นˆ์นธ์œผ๋กœ ๋ณด์ด์ง€๋งŒ

  2. ${2:something}์œผ๋กœ ๋œ ๊ฒƒ์€ something์ด ๊ธฐ๋ณธ์ ์œผ๋กœ ํ‘œ๊ธฐ๋œ๋‹ค.

  3. tabํ‚ค๋ฅผ ์‚ฌ์šฉํ•ด์„œ 1,2,3โ€ฆ ์ˆœ์œผ๋กœ ์ด๋™ํ•˜๋ฉด์„œ ์ˆ˜์ •์ด ๊ฐ€๋Šฅํ•˜๊ณ 

  4. $0์€ ๋งจ ๋งˆ์ง€๋ง‰ ์ˆœ์„œ๋ฅผ ๊ทœ์ •ํ•œ๋‹ค. 0์—์„œ ํ•œ ๋ฒˆ๋” tabํ‚ค๋ฅผ ๋ˆ„๋ฅด๋ฉด ํ•ด๋‹น snippet ์ˆ˜์ •์„ ํƒˆ์ถœํ•œ๋‹ค.

  5. ``

reference#