프로젝트 설정과 탐색·리팩터링
Profile·workspace·심볼 탐색·Git 검토를 연결해 코드를 읽고 수정하는 작업 흐름을 만듭니다.
목표는 메뉴를 비슷하게 만드는 것이 아니라 코드를 읽고 바꾸는 시간을 줄이는 것이다. 처음 30분은 테마 선택보다 프로젝트 열기, SDK 확인, 심볼 탐색에 사용한다.
파일 대신 프로젝트를 연다
VS Code를 설치한 뒤 File: Open Folder로 빌드 설정이 있는 폴더를 연다.
Java는 pom.xml 또는 settings.gradle(.kts), TS는 package.json·tsconfig.json,
Go는 go.mod·go.work, Python은 pyproject.toml이 기준이다. 파일 하나만 열면
프로젝트의 의존성과 실행 위치를 잃기 쉽다.
독립 서비스 여러 개라면 Multi-root workspace를 사용할 수 있다. 반대로 하나의 빌드 그래프를 이루는 모노레포는 먼저 저장소 루트 하나를 열고 언어별 프로젝트 인식이 정상인지 확인한다. 같은 소스가 부모·자식 workspace에 중복 포함되면 오류와 테스트가 두 번 보일 수 있다.
Profile과 팀 설정을 분리한다
Profiles: Create Profile에서 Java, Web, Go, Python Profile을 만든다.
공통 단축키·테마는 개인 취향이고, formatter와 테스트 명령은 팀 계약이다.
Profile 내보내기는 초기 설정 공유에 유용하지만 빌드 도구 버전 잠금 파일을 대체하지 않는다.
Profiles 공식 안내
| 보관 위치 | 넣을 내용 | 피할 내용 |
|---|---|---|
| 개인 User/Profile | 폰트, 키맵, 로컬 SDK 경로 | 팀 전체에 강제할 스타일 |
.vscode/settings.json | 언어별 formatter·검사 연결 | 개인 홈 경로·인증값 |
.vscode/extensions.json | 필요한 확장 ID 권장 목록 | 확장 버전이 고정된다는 가정 |
| 빌드·도구 설정 | lint 규칙, formatter 규칙, SDK 버전 | IDE에서만 성립하는 별도 규칙 |
확장 화면에서 표시 이름과 게시자·확장 ID를 확인한다. 필요한 언어의 확장만 설치한다.
권장 목록은 자동 설치나 버전 잠금이 아니다. 실제 설치 상태는
code --list-extensions --show-versions로 기록할 수 있다.
확장 관리
학습용 프로젝트의 공통 시작 설정은 다음과 같다. 저장 자동 수정은 포맷 충돌 해결에서 언어별로 켠다.
{
"files.autoSave": "off",
"editor.formatOnSave": false,
"editor.formatOnPaste": false,
"editor.formatOnType": false,
"editor.formatOnSaveMode": "file",
"editor.codeActionsOnSave": {
"source.fixAll": "never",
"source.organizeImports": "never"
},
"editor.bracketPairColorization.enabled": true,
"editor.guides.bracketPairs": true,
"editor.stickyScroll.enabled": true
}언어별 기본값은 이 일반 설정보다 우선할 수 있다. 특히 Go처럼 확장이 언어별 저장 동작을
제공하는 경우 [go] 설정까지 확인한다. @modified, @lang:go, @ext:golang.go를
Settings 검색에 사용하면 원인을 좁히기 쉽다.
설정 범위와 우선순위
이름보다 작업을 기억한다
기본 키맵 기준이다. 키맵 확장·OS 예약 키 때문에 다르면 Command Palette에서 표의 명령을 검색하고 Keyboard Shortcuts에서 현재 할당을 확인한다. macOS에서 F키는 키보드 설정에 따라 Fn이 필요하다. IntelliJ 키맵을 쓰더라도 실제 명령 이름은 익혀 둔다.
필수 단축키 표에서 Windows·Linux·macOS별 키를 확인합니다. Linux의 정의 미리 보기와 이전 위치 키는 Windows와 다릅니다.
키맵 원문은 Keyboard shortcuts, 탐색 기능은 Code Navigation을 따른다.
Ctrl+P에서 파일 이름 뒤에 :42를 붙여 특정 줄로 간다. 열린 파일의 Breadcrumbs와
Outline으로 구조를 보고, 인터페이스에서는 Go to Implementations와 Call Hierarchy를 사용한다.
대량 텍스트 검색은 설정 키·로그 문구처럼 심볼이 아닌 대상에 쓰고, 함수 이름 변경은 F2로 한다.
리팩터링은 작은 변경으로 검증한다
예를 들어 calculateTotal을 calculateSubtotal로 바꾸려면 먼저 References에서 호출자를
확인한다. F2로 이름을 바꾼 뒤 diff를 검토하고 타입 검사와 해당 테스트를 실행한다.
문자열 기반 DI 이름, 직렬화 키, SQL, reflection 호출은 언어 서버의 참조 범위 밖일 수 있으므로
텍스트 검색을 함께 수행한다. 이것은 아래 실습의 검토 절차이지 특정 확장이 모든 참조를
갱신한다는 보장이 아니다.
여러 줄을 선택한 뒤 Refactor...에서 Extract Method/Function/Variable을 확인한다.
메뉴는 언어와 선택 범위에 따라 달라진다. 명령이 없다면 파일 모드·프로젝트 오류를 먼저
확인하고 언어별 지원 목록을 본다. 리팩터링 개요
멀티 커서는 반복 문구 편집에 쓰되 심볼 리팩터링과 구분한다. 정규식 바꾸기는 Preview로 일치 범위를 확인하고 실행한다. 여러 파일을 고친 직후에는 Source Control에서 파일별 diff를 읽고 필요한 줄만 stage한다. 기본 편집, Source Control
20분 실습
- 기존 작은 프로젝트를 열고 터미널에서 빌드·테스트를 한 번 실행한다.
- 심볼 검색으로 진입점에 가서 정의 → 사용처 → 이전 위치를 왕복한다.
- 내부 함수 하나를 Rename하고 다른 파일의 호출자가 바뀌는지 확인한다.
- 함수 일부를 Extract하고 같은 테스트를 다시 실행한다.
- Source Control에서 의도하지 않은 포맷 변경이 없는지 확인한다.
통과 기준은 파일 탐색기를 반복해서 펼치지 않고 호출 경로를 찾고, 테스트를 유지하며 변경을 검토하는 것이다. 언어 오류가 있으면 다음 확장을 추가하기보다 해당 언어 가이드의 복구 절차를 따른다.
영상 실습: Code Customization 101: Supercharge VS Code with Profiles — Visual Studio Code, 2023-06-29. Profile 생성·전환·내보내기를 따라 하되 프로젝트 설정은 저장소 파일로 관리한다. 자세한 시청 안내는 자료실에 있다.
생산성 팁을 자기 작업으로 바꾸기
Fireship의 25 VS Code Productivity Tips and Speed Hacks는 탐색과 편집 기능을 빠르게 훑는 자료입니다. 02:43 심볼 찾기, 07:14 Tasks, 10:50 Rename Symbol을 보고 각 기능을 자기 프로젝트에서 한 번씩 재현합니다. 영상의 확장을 전부 설치하는 대신 반복하는 작업 세 개를 골라 단축키와 완료 시간을 기록합니다. 시간은 게시자 챕터 기준입니다.
처음 시작한다면 freeCodeCamp.org의 Visual Studio Code Crash Course로 화면 구조를 익힌 뒤 이 문서의 20분 실습을 진행합니다. 최신 설정 키는 공식 자료실에서 확인합니다.
단축키와 확장 설치
필수 단축키에서 OS별 탐색·편집·디버깅 키를 확인하고, 언어별 확장과 조합별 Profile에서 필요한 설치 범위를 선택합니다.