자주 쓰는 코드 조각(snippet)은 미리 등록해두면 아주 편리하다. 특히 함수나 메서드를 생성하는 것은 매우 자주있는 일인데 매번 아래와 같이 타이핑을 한다면 생산성이 떨어질 수 밖에 없다.

public function functionName()
{

}

# 사용자 Snippet 살펴보기

커맨드 팔레트(⇧⌘P)에서 snippet으로 검색하면 Configure User Snippets라는 메뉴가 나온다.

다음 대화상자에서 언어별 snippet을 확인할 수 있는데 php를 선택하여 열어보자.

열어보면 아래와 같이 모두 주석처리가 되어 있다.

{
	// Place your snippets for php 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"
	// }
}

prefix가 일종의 예약어이고 예약어 입력 후 TAB을 누르면 body가 나타나는 방식인데 JSON 코드로 되어있다보니 snippet을 만드는 것이 직관적이지는 않다. 이를 보완해줄 수 있는 도구가 바로 Snippet Creator이다.

# Snippet Creator 설치

확장 프로그램에서 Snippet Creator 검색 후 설치한다.

# Snippet 생성

아래와 같은 코드를 작성해 두고 블럭설정을 한 다음 커맨드 팔레트에서 Create Snippet을 실행해 보자.

public function foo()
{
    
}
  • 어떤 언어의 snippet인지 지정한다. php를 선택한다.

  • snippet의 이름을 지정한다. ‘public method’이라고 입력한다.

  • snippet의 shortcut을 지정한다. Tab 자동완성 때 사용할 단축어를 입력한다. 나는 pubf를 사용하지만 met나 _m을 사용하기도 한다.

  • snippet의 설명을 입력한다. New Public Method라고 입력한다. 또는 그냥 엔터를 쳐도 무방하다.

# Tab 자동완성 활성화

환경설정에 들어가 Tab Completion을 활성화 한다.

# Tab 자동완성 동작 확인

pubf + Tab을 눌러본다.

메서드명인 foo까지 같이 생성되므로 Tab 자동완성 후 직접 입력할 수 있게 변경해보자.

# Snippet 수정

Configure User Snippets에 들어가 foo대신 $1을, 괄호 사이 탭으로 띄어져있는 부분에 $2를 입력한다. 그럼 처음 자동 완성시 커서가 $1에 가게 되고 거기서 탭을 하면 $2 위치로 이동한다.

{
	"public method": {
		"prefix": "pubf",
		"body": [
			"public function $1()",
			"{",
			"    $2",
			"}"
		],
		"description": "public function"
	},
}

# Protected Method Snippet 만들기

아래와 같이 바로 $1, $2를 넣어서 protected method snippet을 만들어보자.

protected function $1
{
\t$2
}

# 참고

https://laracasts.com/series/visual-studio-code-for-php-developers/episodes/5