지난 글에서는 로그처럼 단어 하나로 찾았다. 예시 스니펫 11개일 때는 이걸로 충분하다. 그런데 몇 달 쓰다 보면 스니펫이 백 개를 넘는다. docker로 찾으면 스무 개가 나오고, log로 찾으면 도커 로그, IIS 로그, Git log가 섞여 나온다.
그래서 검색 칸에 쓸 수 있는 문법을 네 가지 넣었다. 팝업의 빈 검색 칸에 회색으로 적혀 있는 #태그 @언어 "구문"이 그 힌트다.
| 입력 | 의미 |
|---|---|
log tail |
모든 단어가 들어간 것 |
#docker |
태그가 docker인 것 |
@sql |
언어가 sql인 것 |
"docker logs" |
이 구문이 그대로 들어간 것 |
#docker @bash logs |
위 조건을 함께 |
하나씩 화면으로 보자.
기본: 단어는 어디에 있든 찾는다
아무 기호 없이 친 단어는 제목, 본문, 설명, 태그 어디에 있든 찾는다. 단어 중간이어도 된다. dock으로 docker가, 테이너로 컨테이너가 나온다.
단어를 여러 개 띄어 쓰면 모두 들어 있는 것만 남는다(AND). log tail은 log도 있고 tail도 있는 스니펫이다. 어느 쪽이 먼저 나오는지는 상관없다.
두 글자 이하 단어(ps, ip, 로그)도 똑같이 찾는다. 세 글자 이상과 두 글자 이하는 내부에서 찾는 방식이 다른데, 쓰는 쪽에서는 차이를 느낄 일이 없다. 왜 두 방식으로 나뉘는지는 개발기의 FTS5 trigram 글에 정리해 두었다.
#태그: 분류로 좁히기
# 뒤에 태그 이름을 쓰면 그 태그가 붙은 스니펫만 남는다.

예시 스니펫 중 docker 태그가 붙은 셋이 나왔다. 태그는 단어 검색과 달리 이름이 정확히 같아야 한다. #dock으로는 docker 태그를 찾지 못한다. 대신 대소문자는 가리지 않는다.
#docker #log처럼 태그를 여러 개 쓰면 모두 붙은 것만 남는다. 도커 스니펫 중에서 로그 관련만 보고 싶을 때 쓴다.
태그는 사람이 붙이는 분류라서, 본문에 그 단어가 없어도 묶을 수 있다는 게 장점이다. 예를 들어 Restart-WebAppPool 명령어에는 "iis"라는 글자가 없지만 #iis 태그를 붙여 두면 IIS 관련 명령어끼리 모인다.
@언어: 같은 단어, 다른 세계
스니펫마다 언어를 하나 고른다(powershell, docker, sql, bash, git 등). @ 뒤에 언어를 쓰면 그 언어의 스니펫만 남는다.

태그와 비슷해 보이지만 쓰임이 다르다. 태그는 여러 개 붙일 수 있는 분류이고, 언어는 "이 본문을 어디에 붙여 넣는가"다. 같은 "로그 보기"라도 PowerShell 창에 붙여 넣을 것인지, 리눅스 서버 bash에 붙여 넣을 것인지는 지금 열린 창에 따라 정해진다. @bash log처럼 쓰면 지금 붙여 넣을 수 있는 것만 본다.
언어는 스니펫 하나에 하나뿐이라서, @bash @powershell처럼 두 개를 쓰면 둘 중 하나인 것을 보여 준다. 태그를 여러 개 쓸 때(모두 붙은 것)와 반대다.
"구문": 띄어쓰기와 기호까지 그대로
큰따옴표로 감싸면 그 안의 글자를 순서와 띄어쓰기까지 그대로 찾는다.

명령어 옵션을 찾을 때 특히 쓸모가 있다. --no-edit을 따옴표 없이 쳐도 대개 찾기는 하지만, docker logs처럼 두 단어를 붙인 순서대로 찾고 싶을 때는 따옴표가 필요하다. 따옴표 없이 docker logs를 치면 "docker와 logs가 어디든 들어간 것"이 되어, 설명에 logs라는 말만 들어간 다른 도커 스니펫까지 나올 수 있다.
닫는 따옴표를 깜빡해도 괜찮다. "--no까지만 쳐도 끝까지를 구문으로 본다. 치는 도중에도 결과가 바로 바뀌어야 해서 그렇게 만들었다.
조합: 태그로 좁히고 단어로 고른다
네 가지는 마음대로 섞어 쓸 수 있고, 모든 조건을 동시에 만족하는 것만 남는다. 가장 자주 쓰는 형태는 태그로 범위를 좁히고 단어로 고르는 것이다.

#docker 컨테이너로 찾았다. 「도커 컨테이너 로그 보기」, 「도커 컨테이너 셸 접속」은 제목에 "컨테이너"가 있다. 세 번째 「도커 안 쓰는 리소스 정리」는 제목에는 없지만 설명에 "중지된 컨테이너, 사용하지 않는 네트워크…"가 적혀 있어서 함께 나왔다. 제목에 맞는 것이 위로 올라가고, 설명에서만 맞는 것은 아래에 놓인다.
결과가 나오는 순서
검색어가 있을 때 목록은 이 순서로 정렬된다.
- 고정한 스니펫 (
Ctrl+P) - 얼마나 잘 맞는가 — 제목에서 맞은 것 > 태그 > 본문·설명
- 많이 쓴 것
- 최근에 쓴 것
검색어가 없을 때는 고정 → 최근 사용 → 많이 쓴 것 → 제목 순이다.
1번이 맨 앞인 이유는 단순하다. 하루에도 몇 번씩 쓰는 명령어는 검색 결과 어디에 있든 맨 위에 있어야 Enter 한 번으로 끝난다. 그런 스니펫이 있다면 팝업에서 선택하고 Ctrl+P를 눌러 두면 된다.
잘 찾히게 만드는 요령
검색 문법보다 더 효과가 큰 것은 스니펫을 저장할 때의 습관이다.
- 제목은 내가 찾을 때 칠 말로. "docker logs 명령"보다 "도커 컨테이너 로그 보기"가 낫다. 찾을 때 머릿속에 떠오르는 말은 대개 명령어가 아니라 하려는 일이다
- 본문에 없는 말은 설명에. "bash가 없는 이미지는 /bin/sh"처럼 적어 두면 나중에
sh로도 찾힌다 - 태그는 적게, 일정하게. 태그 종류가 많으면
#를 쓸 때 이름이 기억나지 않는다. 기술 이름(docker,mysql,iis) 정도로 충분하다
다음 글에서는 이 습관대로 스니펫을 직접 만드는 법, 관리 창과 태그, 그리고 {{변수}}를 넣는 요령을 다룬다.