개발/Visual Studio Code

VS Code 코드 탐색 사용법 총정리|정의·참조·심볼을 빠르게 찾는 단축키

반응형
VS CODE PRODUCTIVITY

VS Code 코드 탐색 사용법
정의·참조·심볼을 빠르게 찾기

탐색기에서 파일을 하나씩 열지 않고도 함수의 정의, 사용처, 구현체와 원하는 심볼을 빠르게 오가는 방법을 공식 문서 기준으로 정리했습니다.

규모가 큰 프로젝트에서 시간이 가장 많이 드는 일 중 하나는 “이 코드가 어디에서 정의됐고, 어디에서 사용되는가?”를 파악하는 것입니다. VS Code의 코드 탐색 기능을 익히면 파일 구조를 모두 외우지 않아도 코드의 흐름을 따라갈 수 있습니다.

  • 낯선 프로젝트 분석 함수 호출부에서 정의로 이동하고 다시 돌아오며 실행 흐름을 파악합니다.
  • 수정 영향도 확인 함수나 클래스의 모든 참조를 확인해 변경이 미치는 범위를 살펴봅니다.
  • 인터페이스 구현 추적 추상 메서드나 인터페이스를 실제로 구현한 클래스를 찾습니다.
  • 큰 파일 안에서 이동 함수·클래스·변수 이름으로 원하는 위치를 즉시 엽니다.
전제 조건: 정의·참조·구현 찾기는 해당 언어의 언어 서비스가 제공하는 기능입니다. JavaScript·TypeScript처럼 기본 지원되는 언어도 있고, Python·Java·C#처럼 공식 또는 적절한 언어 확장이 필요한 경우도 있습니다. 지원 수준은 언어마다 다릅니다.

1 정의로 이동 — F12

함수나 클래스, 변수 위에 커서를 두고 F12를 누르면 해당 심볼이 선언되거나 정의된 위치로 이동합니다. Windows에서는 Ctrl+클릭, macOS에서는 Command+클릭으로도 이동할 수 있습니다.

언제 쓰나? 함수의 내부 로직을 자세히 읽거나, 타입과 기본값이 어디서 결정되는지 확인할 때 적합합니다. 공식 문서의 Go to Definition에서 동작을 확인할 수 있습니다.

2 현재 위치에서 정의 미리보기 — Alt/Option+F12

정의로 완전히 이동하지 않고 잠깐 확인만 하고 싶다면 Peek Definition을 사용합니다.

운영체제기본 단축키결과
Windows / LinuxAlt + F12현재 코드 안에 정의 미리보기 창 표시
macOSOption + F12현재 코드 안에 정의 미리보기 창 표시

Peek 창 안에서 코드를 읽거나 간단히 수정할 수 있고, Esc를 누르면 닫힙니다. 맥락을 잃지 않고 구현만 확인하고 싶을 때 유용합니다.

3 모든 사용처 찾기 — Shift+F12

심볼 위에서 Shift + F12를 누르면 해당 심볼을 참조하는 위치가 Peek 창에 표시됩니다. 결과 목록을 이동하며 각 사용처를 확인하고 필요한 부분을 바로 편집할 수 있습니다.

텍스트 검색과의 차이: 참조 찾기는 단순히 같은 글자를 찾는 것이 아니라 언어 서비스가 같은 심볼로 판단한 위치를 찾습니다. 이름이 같아도 서로 다른 지역 변수는 제외될 수 있어 리팩터링 전 영향도 확인에 더 적합합니다. 자세한 동작은 공식 Peek와 References 안내를 참고하세요.

4 안전하게 이름 변경 — F2

여러 파일에서 사용되는 함수나 변수 이름은 텍스트 전체 바꾸기보다 F2의 Rename Symbol을 사용하는 편이 안전합니다. 새 이름을 입력하고 Enter를 누르면 언어 서비스가 인식한 사용처가 함께 변경됩니다.

추천 순서: Shift+F12로 참조 범위 확인 → F2로 이름 변경 → 소스 제어의 변경 비교 화면에서 결과 검토
기능Windows / LinuxmacOS용도
파일 빠르게 열기Ctrl + PCommand + P파일 이름 일부로 프로젝트 파일 열기
현재 파일의 심볼Ctrl + Shift + OCommand + Shift + O현재 파일의 함수·클래스·변수로 이동
워크스페이스 전체 심볼Ctrl + TCommand + T어느 파일인지 모르는 심볼 찾기
최근 열린 편집기Ctrl + TabControl + Tab최근 사용한 열린 파일 사이 이동

Quick Open을 더 빠르게 쓰는 입력 규칙

Ctrl + P 또는 Command + P를 연 뒤 아래 접두사를 활용하면 한 입력창에서 다양한 위치로 이동할 수 있습니다.

입력 예시의미예시 결과
user파일 이름 검색userService.ts, UserCard.jsx
@validate현재 파일의 심볼 검색validateEmail() 함수
@:현재 파일 심볼을 종류별로 묶어 표시클래스·함수·변수 그룹
#UserService워크스페이스 전체 심볼 검색다른 파일에 있는 클래스
:120현재 파일의 120번째 줄로 이동오류 로그의 줄 확인

공식 문서는 현재 파일의 심볼을 Ctrl/Command+Shift+O, 워크스페이스 전체 심볼을 Ctrl/Command+T로 여는 방법을 안내합니다. 자세한 내용은 Go to Symbol에서 확인할 수 있습니다.

정의와 참조를 따라 여러 파일을 이동하다 보면 출발 위치를 잊기 쉽습니다. 이때 브라우저의 뒤로 가기처럼 편집 위치 기록을 사용할 수 있습니다.

기능Windows / LinuxmacOS
이전 편집 위치로Ctrl + -Control + -
다음 편집 위치로Ctrl + Shift + -Control + Shift + -
  1. 호출부 확인
  2. F12 정의 이동
  3. 내부 로직 확인
  4. Ctrl/Control+- 복귀
가장 효율적인 조합: 깊게 읽을 때는 F12 → 이전 위치 복귀, 잠깐 볼 때는 Alt/Option+F12 → Esc를 사용하세요. 공식 Quick file navigation에도 이동 기록 단축키가 안내되어 있습니다.

Breadcrumbs로 현재 위치 파악하기

편집기 위의 Breadcrumbs는 현재 파일의 폴더 경로와 심볼 경로를 보여줍니다. 예를 들어 src › services › UserService › updateUser처럼 현재 함수가 어느 파일과 클래스 안에 있는지 빠르게 파악할 수 있습니다.

  • Breadcrumb 항목을 클릭하면 같은 단계의 파일이나 심볼 목록이 열립니다.
  • View → Show Breadcrumbs에서 표시 여부를 변경할 수 있습니다.
  • breadcrumbs.filePath와 breadcrumbs.symbolPath 설정으로 경로 표시 범위를 조절할 수 있습니다.

다음 JavaScript 코드에서 calculateDiscount()가 어떤 규칙으로 할인액을 계산하는지 확인한다고 가정해 보겠습니다.

// checkout.js
const total = calculateDiscount(cart, customer);
renderPayment(total);
  1. calculateDiscount 위에서 Alt/Option+F12를 눌러 정의를 미리 봅니다.
  2. 로직이 길어 전체 파일을 읽어야 한다면 F12로 정의 파일을 엽니다.
  3. 함수를 사용하는 다른 결제 흐름을 보려면 Shift+F12로 모든 참조를 확인합니다.
  4. 분석을 마치면 Ctrl/Control+-로 원래 호출부에 돌아옵니다.
// discount.js
export function calculateDiscount(cart, customer) {
  const rate = customer.grade === 'VIP' ? 0.15 : 0.05;
  return cart.total * (1 - rate);
}
핵심: 파일명이나 폴더 위치를 몰라도 호출부의 심볼을 출발점으로 정의와 사용처를 따라갈 수 있습니다.

6. 실전 예제 2 — 인터페이스 구현체 찾기

TypeScript 프로젝트에서 인터페이스만 보이고 실제 저장 방식이 어디에 구현되어 있는지 모를 때는 Go to Implementation을 사용합니다.

interface UserRepository {
  findById(id: string): Promise<User>;
  save(user: User): Promise<void>;
}
  1. UserRepository 또는 메서드 위에 커서를 둡니다.
  2. 명령 팔레트에서 Go to Implementation을 실행합니다. 기본 키는 Windows/Linux에서 Ctrl+F12, macOS에서 Command+F12입니다.
  3. DatabaseUserRepository, MemoryUserRepository처럼 여러 구현체가 있으면 목록에서 확인할 대상을 선택합니다.
  4. Ctrl/Command+T에서 구현체 이름을 검색해 다른 파일의 심볼로 바로 이동해 봅니다.
class DatabaseUserRepository implements UserRepository {
  async findById(id: string): Promise<User> {
    return database.users.findOne({ id });
  }
}
구현 이동은 언어 지원에 따라 다릅니다. 모든 언어와 파일 형식에서 동일하게 동작하지 않습니다. 메뉴에 결과가 없으면 해당 언어 확장이 활성화됐는지, 프로젝트 인덱싱이 끝났는지 확인하세요.
  • F12를 눌러도 이동하지 않음 파일의 언어 모드와 관련 확장 설치 여부를 확인하고, 프로젝트를 폴더 단위로 열었는지 살펴봅니다.
  • 참조 결과가 일부만 표시됨 동적 호출이나 문자열로 구성된 이름은 언어 서비스가 정적으로 추적하지 못할 수 있습니다. 전체 텍스트 검색도 함께 사용합니다.
  • 같은 이름의 심볼이 너무 많음 워크스페이스 심볼 검색에서 더 긴 이름을 입력하고 심볼 종류와 파일 경로를 함께 확인합니다.
  • 단축키가 다르게 동작함 키맵 확장과 사용자 설정에 따라 달라질 수 있습니다. 키보드 단축키 화면에서 명령 이름으로 현재 키를 확인합니다.

기본 단축키의 최신 목록과 명령 ID는 공식 Default Keyboard Shortcuts Reference에서 확인할 수 있습니다.

8. 5분 연습 과제

  • 사용 중인 프로젝트에서 함수 호출 하나를 골라 F12로 정의로 이동하기
  • Ctrl/Control+-로 정확히 원래 위치에 돌아오기
  • 같은 함수에서 Alt/Option+F12로 Peek Definition 열고 Esc로 닫기
  • Shift+F12로 참조 목록을 열어 서로 다른 파일의 사용처 두 곳 확인하기
  • Ctrl/Command+Shift+O로 현재 파일의 가장 긴 함수 찾기
  • Ctrl/Command+T로 프로젝트 전체에서 클래스 하나 찾기
오늘 외울 단축키는 세 개면 충분합니다.
F12로 정의 이동, Shift+F12로 참조 확인, Ctrl/Control+-로 원래 위치 복귀. 이 조합만 익혀도 낯선 코드를 읽는 속도가 크게 달라집니다.
공식 참고 자료
· VS Code Code Navigation
· VS Code Default Keyboard Shortcuts Reference
· VS Code Keyboard Shortcuts

확인일: 2026년 7월 19일. 단축키는 VS Code 기본 키 바인딩 기준이며 운영체제, 키보드 배열, 키맵 확장 및 사용자 설정에 따라 달라질 수 있습니다.
반응형
이 글이 유용했다면 링크를 공유해 보세요.