자주 쓰는 코드 스니펫 관리 도구로 개발 속도 높이기

똑같은 로깅 설정, 똑같은 API 호출 래퍼, 똑같은 재시도 데코레이터. 새 프로젝트를 시작할 때마다 예전 프로젝트 폴더를 열어서 찾아 복사한 경험이 있을 겁니다. 한 번 찾는 데 걸리는 시간은 1~2분이라 별것 아닌 것 같지만, 하루에 열 번이면 20분이고 한 달이면 일곱 시간이 넘습니다. 이번 글에서는 자주 쓰는 코드 조각을 체계적으로 모아두고 두세 글자만 입력해서 꺼내 쓰는 방법을, 설치가 필요 없는 방법부터 순서대로 정리했습니다.

이런 상황이라면 지금이 시작할 때입니다

아래 중 하나라도 해당된다면 스니펫 관리를 도입해서 얻는 시간이 도구를 익히는 시간보다 큽니다.

  • 같은 코드를 다시 쓰려고 예전 프로젝트 폴더나 깃 히스토리를 뒤진 적이 있다
  • 나중에 쓰려고 메모장이나 슬랙 나에게 보내기에 코드를 붙여뒀는데 정작 필요할 때 못 찾았다
  • 팀원이 “그거 어떻게 처리했었죠?”라고 물으면 링크를 주는 대신 코드를 다시 붙여넣는다
  • 검색해서 나온 스택오버플로 답변을 매번 다시 검색한다

1단계: 설치 없이 VS Code 내장 스니펫부터

별도 프로그램을 깔기 전에, 이미 쓰고 있는 에디터의 기능부터 쓰는 게 가장 빠릅니다. VS Code에서 Ctrl+Shift+P를 누르고 Configure User Snippets(사용자 스니펫 구성)를 검색한 뒤 언어를 고르면 해당 언어용 JSON 파일이 열립니다. 파이썬을 고르면 python.json이 열리는 식입니다.

아래는 파이썬 로거 설정을 스니펫으로 등록한 예시입니다. 편집기에서 logsetup이라고 입력하고 Tab을 누르면 전체 코드가 한 번에 삽입됩니다.

{
  "Python 로거 기본 설정": {
    "prefix": "logsetup",
    "body": [
      "import logging",
      "",
      "logging.basicConfig(",
      "    level=logging.INFO,",
      "    format=\"%(asctime)s [%(levelname)s] %(message)s\",",
      "    handlers=[",
      "        logging.FileHandler(\"${1:app.log}\", encoding=\"utf-8\"),",
      "        logging.StreamHandler(),",
      "    ],",
      ")",
      "logger = logging.getLogger(__name__)",
      "$0"
    ],
    "description": "파일과 콘솔에 동시 출력하는 로거 설정"
  }
}

여기서 prefix는 입력할 단축어, body는 삽입될 코드를 줄 단위 배열로 적은 것입니다. 파일은 %APPDATA%\Code\User\snippets\ 경로에 저장되므로, 이 폴더만 백업해두면 다른 PC에서도 그대로 복원할 수 있습니다.

스니펫을 훨씬 쓸 만하게 만드는 문법 세 가지

단순히 코드를 통째로 넣는 것보다, 삽입 직후 커서가 수정할 위치로 자동으로 이동하게 만들면 체감 속도가 크게 달라집니다. 다음 세 가지만 알면 충분합니다.

  1. $1, $2, $0 — Tab을 누를 때마다 커서가 이동할 순서입니다. $0은 마지막으로 커서가 놓일 자리입니다.
  2. ${1:기본값} — 기본값이 미리 채워진 채 선택 상태로 삽입되어, 그대로 두거나 바로 덮어쓸 수 있습니다.
  3. ${1|선택1,선택2|} — 정해진 값 중에서 고르는 드롭다운이 뜹니다. 환경 이름이나 로그 레벨처럼 후보가 정해진 값에 유용합니다.

여기에 $TM_FILENAME_BASE(확장자를 뺀 파일명), $CURRENT_YEAR, $CURRENT_MONTH, $CURRENT_DATE 같은 내장 변수를 조합하면 파일 헤더 주석 같은 건 손댈 필요가 없어집니다.

{
  "새 파이썬 파일 헤더": {
    "prefix": "pyhead",
    "body": [
      "\"\"\"",
      "$TM_FILENAME_BASE",
      "작성일: $CURRENT_YEAR-$CURRENT_MONTH-$CURRENT_DATE",
      "설명: ${1:한 줄 설명}",
      "작성자: ${2|김개발,이코딩,박자동|}",
      "\"\"\"",
      "",
      "$0"
    ],
    "description": "파일명과 날짜가 자동으로 채워지는 헤더 주석"
  }
}

2단계: 에디터 밖에서도 써야 한다면 전용 도구

내장 스니펫은 편하지만 한계가 분명합니다. 해당 에디터 안에서만 쓸 수 있고, SQL 쿼리나 셸 명령어처럼 에디터 밖에서 꺼내 쓸 일이 많은 코드에는 잘 맞지 않습니다. 그럴 땐 전용 스니펫 관리 도구를 씁니다.

도구플랫폼비용특징
massCode윈도우 / 맥 / 리눅스무료 (오픈소스)폴더와 태그로 분류. 저장 위치를 클라우드 동기화 폴더로 지정하면 여러 PC에서 공유 가능
Pieces for Developers윈도우 / 맥 / 리눅스무료저장할 때 설명과 태그를 자동으로 붙여줌. VS Code·JetBrains 플러그인 제공
SnippetsLab맥 전용유료iCloud 동기화, 가벼운 동작. 맥만 쓴다면 가장 무난
GitHub Gist웹 / CLI무료설치 없이 링크로 공유. 비공개 설정 가능하고 버전 기록도 남음

혼자 쓰면서 윈도우를 주력으로 한다면 massCode로 시작하는 것을 권합니다. 무료인 데다 데이터가 로컬 파일로 저장돼서, 나중에 다른 도구로 옮기기도 쉽습니다.

3단계: 팀과 공유할 땐 Gist + CLI 조합

스니펫을 팀원에게 공유해야 한다면 별도 도구보다 GitHub Gist가 현실적입니다. 이미 다들 깃허브 계정이 있고, 링크 하나로 끝나기 때문입니다. gh CLI를 설치했다면 터미널에서 파일을 바로 올릴 수 있습니다.

# 파일 하나를 비공개 Gist로 저장 (기본값이 비공개)
gh gist create logger_setup.py --desc "파일+콘솔 로거 기본 설정"

# 공개 Gist로 저장
gh gist create logger_setup.py --public --desc "파일+콘솔 로거 기본 설정"

# 여러 파일을 하나의 Gist로 묶어서 저장
gh gist create logger_setup.py retry_decorator.py --desc "파이썬 공통 유틸 모음"

# 내가 만든 Gist 목록 확인
gh gist list

# 특정 Gist 내용을 터미널에서 바로 보기
gh gist view <GIST_ID>

# 저장해둔 Gist를 현재 폴더로 내려받기
gh gist clone <GIST_ID>

gh gist create는 기본이 비공개(secret)입니다. 링크를 아는 사람만 볼 수 있으니 사내 코드도 부담이 덜하지만, 검색만 안 될 뿐 링크가 유출되면 누구나 볼 수 있다는 점은 기억해두는 게 좋습니다. 진짜 민감한 코드는 사내 저장소를 쓰세요.

오래 쓰려면 이 네 가지는 지키세요

스니펫 관리는 도구를 고르는 것보다 쌓는 습관이 중요합니다. 정리 없이 쌓기만 하면 6개월 뒤에는 예전 프로젝트 폴더를 뒤지던 때와 똑같아집니다.

  • 저장할 때 한 줄 설명을 반드시 남깁니다. 3개월 뒤의 나는 남입니다. “retry 데코레이터”보다 “API 호출 실패 시 3회까지 지수 백오프로 재시도”가 훨씬 낫습니다.
  • 단축어에 규칙을 정합니다. py-, js-, sql-처럼 접두사를 통일해두면 뭘 등록했는지 기억나지 않아도 접두사만 쳐서 목록을 훑을 수 있습니다.
  • API 키와 비밀번호는 절대 저장하지 않습니다. 반드시 ${1:YOUR_API_KEY} 같은 자리표시자로 바꿔서 넣으세요. 스니펫은 아무 생각 없이 복사되기 때문에 사고가 나기 쉽습니다.
  • 분기에 한 번은 정리합니다. 라이브러리 버전이 올라가면서 더 이상 동작하지 않는 코드는 있는 것보다 없는 게 낫습니다.

마무리

처음부터 완벽한 스니펫 라이브러리를 만들려고 하면 오히려 시작을 못 합니다. 오늘 코드를 복사하다가 “이거 예전에도 썼는데” 싶은 순간이 오면, 그때 하나만 등록하세요. VS Code 내장 스니펫이면 3분이면 충분합니다. 그렇게 스무 개쯤 쌓이는 시점부터 확실히 체감이 옵니다.

다음 글에서는 코드가 아니라 반복되는 업무 자체를 줄이는 방법으로, ChatGPT와 Claude에 바로 넣어 쓸 수 있는 업무 자동화 프롬프트를 정리해보겠습니다.

Leave a Comment