Table of contents
탐색
코드베이스가 커지면 “어디 있는지 아는 것”이 “무엇을 짜는지 아는 것”만큼 중요해진다.
| 기능 | Mac | Windows / Linux |
|---|---|---|
| 클래스 검색 | command(⌘) O | Ctrl N |
| 파일 검색 | command(⌘) shift(⇧) O | Ctrl Shift N |
| 심볼 검색 | command(⌘) option(⌥) O | Ctrl Alt Shift N |
| 전체 검색 | shift(⇧) 두 번 | Shift 두 번 |
| 선언부로 이동 | command(⌘) B | Ctrl B |
| 구현부로 이동 | command(⌘) option(⌥) B | Ctrl Alt B |
| 부모 클래스로 이동 | command(⌘) U | Ctrl U |
| 사용처 찾기 | option(⌥) F7 | Alt F7 |
| 줄 번호로 이동 | control(⌃) G | Ctrl G |
| 뒤로 / 앞으로 | command(⌘) [ / ] | Ctrl Alt ← / → |
| 다음 / 이전 에러 | F2 / shift(⇧) F2 | F2 / Shift F2 |
| 최근 열었던 파일 | command(⌘) E | Ctrl E |
| 최근 편집한 위치 | command(⌘) shift(⇧) E | Ctrl Shift E |
Double Shift가 가장 범용적이다. 클래스, 파일, 심볼, 설정, 액션 전부 여기서 검색된다. 뭘 눌러야 할지 모르겠으면 Shift를 두 번 누르면 된다.
command(⌘) B와 command(⌘) option(⌥) B의 차이는 중요하다. 인터페이스 메서드에 커서를 두고 command(⌘) B를 누르면 인터페이스 선언으로 가고, command(⌘) option(⌥) B를 누르면 실제 구현체 목록이 뜬다. Spring처럼 인터페이스 기반 설계를 쓰는 프로젝트에서는 이 차이를 아는 것만으로 탐색 속도가 달라진다.
command(⌘) E는 파일 단위로 최근 목록을 보여주고, command(⌘) shift(⇧) E는 편집했던 정확한 위치로 돌아간다. 코드 리뷰하다가 방금 고친 지점으로 돌아갈 때는 command(⌘) shift(⇧) E가 정확하다.
검색 & 치환
| 기능 | Mac | Windows / Linux |
|---|---|---|
| 파일 내 검색 | command(⌘) F | Ctrl F |
| 파일 내 치환 | command(⌘) R | Ctrl R |
| 전체 검색 | command(⌘) shift(⇧) F | Ctrl Shift F |
| 전체 치환 | command(⌘) shift(⇧) R | Ctrl Shift R |
전체 검색(command(⌘) shift(⇧) F)에서는 scope 필터를 설정할 수 있다. 프로젝트 전체, 모듈 단위, 특정 디렉토리 — 범위를 좁힐수록 노이즈가 줄어든다. 정규식도 지원하기 때문에 패턴 기반 치환이 필요할 때 별도 도구 없이 해결된다.
치환(command(⌘) R, command(⌘) shift(⇧) R)은 검색 결과를 하나씩 확인하면서 바꿀 수도 있고, 한 번에 전부 바꿀 수도 있다. “Replace All”을 누르기 전에 미리보기에서 의도하지 않은 매칭이 없는지 확인하는 습관을 들이면 사고를 줄일 수 있다.
편집
코드를 짤 때 가장 자주 반복하는 동작들이다. 여기 있는 단축키가 손에 붙으면 타이핑 리듬이 눈에 띄게 빨라진다.
| 기능 | Mac | Windows / Linux |
|---|---|---|
| 코드 포맷팅 | command(⌘) option(⌥) L | Ctrl Alt L |
| 임포트 정리 | command(⌘) option(⌥) O | Ctrl Alt O |
| 라인 주석 토글 | command(⌘) / | Ctrl / |
| 블록 주석 토글 | command(⌘) option(⌥) / | Ctrl Shift / |
| 선택 영역 확장 / 축소 | option(⌥) ↑ / ↓ | Ctrl W / Ctrl Shift W |
| 라인 복제 | command(⌘) D | Ctrl D |
| 라인 삭제 | command(⌘) 백스페이스 | Ctrl Y |
| 라인 위 / 아래로 이동 | command(⌘) shift(⇧) ↑ / ↓ | Shift Alt ↑ / ↓ |
| 구문 자동 완성 | command(⌘) shift(⇧) Enter | Ctrl Shift Enter |
option(⌥) ↑(선택 영역 확장)은 한번 알면 놓을 수 없는 기능이다. 변수에 커서를 놓고 한 번 누르면 변수명이 선택되고, 한 번 더 누르면 표현식 전체, 다시 누르면 줄 전체, 또 누르면 블록 전체로 확장된다. 마우스 드래그보다 정확하고 빠르다.
command(⌘) shift(⇧) Enter는 과소평가된 단축키다. if를 입력한 뒤 누르면 괄호와 중괄호를 자동으로 닫아준다. 메서드 시그니처를 쓴 뒤 누르면 본문 블록이 열린다. 작은 조합인데 타이핑 양을 꽤 줄여준다.
코드 생성 & 자동완성
IntelliJ가 텍스트 에디터와 가장 차별화되는 영역이다. 반복적인 보일러플레이트를 IDE가 대신 써준다.
| 기능 | Mac | Windows / Linux |
|---|---|---|
| 생성 메뉴 (생성자, getter 등) | command(⌘) N | Alt Insert |
| 코드 감싸기 (try-catch, if 등) | command(⌘) option(⌥) T | Ctrl Alt T |
| 인터페이스 메서드 구현 | control(⌃) I | Ctrl I |
| 부모 메서드 오버라이드 | control(⌃) O | Ctrl O |
| 기본 자동완성 | control(⌃) Space | Ctrl Space |
| 스마트 자동완성 | control(⌃) shift(⇧) Space | Ctrl Shift Space |
| 빠른 수정 / 의도 액션 | option(⌥) Enter | Alt Enter |
| 파라미터 정보 | command(⌘) P | Ctrl P |
| 문서 보기 | command(⌘) Q | Ctrl Q |
| 빠른 정의 미리보기 | command(⌘) shift(⇧) I | Ctrl Shift I |
option(⌥) Enter는 IntelliJ에서 가장 많이 누르게 되는 키다. 에러가 있으면 수정 제안이 나오고, 정상 코드에서도 리팩토링 옵션을 보여준다. 커서를 놓고 뭘 해야 할지 모르겠을 때 일단 option(⌥) Enter를 눌러보면 IntelliJ가 할 수 있는 일 목록을 알려준다.
control(⌃) Space(기본)과 control(⌃) shift(⇧) Space(스마트)의 차이도 알아두면 좋다. 기본 자동완성은 이름 기반으로 후보를 나열하고, 스마트 자동완성은 현재 컨텍스트의 타입을 분석해서 맞는 후보만 걸러준다. 반환 타입이 일치하는 변수나 메서드만 보고 싶을 때 control(⌃) shift(⇧) Space가 정확하다.
리팩토링
텍스트 에디터에서 이름을 바꾸면 전체 치환을 돌려야 하고, 문자열 리터럴까지 바뀌는 사고가 난다. IntelliJ는 코드의 의미를 이해하고 바꿔주기 때문에 이런 문제가 없다.
| 기능 | Mac | Windows / Linux |
|---|---|---|
| 이름 변경 | shift(⇧) F6 | Shift F6 |
| 시그니처 변경 | command(⌘) F6 | Ctrl F6 |
| 변수 추출 | command(⌘) option(⌥) V | Ctrl Alt V |
| 메서드 추출 | command(⌘) option(⌥) M | Ctrl Alt M |
| 필드 추출 | command(⌘) option(⌥) F | Ctrl Alt F |
| 파라미터 추출 | command(⌘) option(⌥) P | Ctrl Alt P |
| 이동 | F6 | F6 |
| 리팩토링 전체 메뉴 | command(⌘) option(⌥) shift(⇧) T | Ctrl Alt Shift T |
shift(⇧) F6(이름 변경)은 가장 안전하고 가장 자주 쓰는 리팩토링이다. 변수, 메서드, 클래스, 파일 이름까지 한 번에 바꿔주고, 참조하는 모든 코드도 같이 수정된다.
command(⌘) option(⌥) M(메서드 추출)과 command(⌘) option(⌥) V(변수 추출)은 코드를 정리할 때 핵심이다. 긴 메서드에서 블록을 선택하고 command(⌘) option(⌥) M을 누르면 그 블록이 새 메서드로 빠지면서, 원래 자리에는 호출문이 남는다. 복잡한 표현식에 command(⌘) option(⌥) V를 쓰면 의미 있는 이름이 붙어 가독성이 올라간다.
실행 & 디버그
| 기능 | Mac | Windows / Linux |
|---|---|---|
| 실행 | control(⌃) R | Shift F10 |
| 디버그 | control(⌃) D | Shift F9 |
| 현재 파일 / 테스트 실행 | control(⌃) shift(⇧) R | Ctrl Shift F10 |
| 중단점 토글 | command(⌘) F8 | Ctrl F8 |
| Step Over | F8 | F8 |
| Step Into | F7 | F7 |
| Smart Step Into | shift(⇧) F7 | Shift F7 |
| Step Out | shift(⇧) F8 | Shift F8 |
| 커서 위치까지 실행 | option(⌥) F9 | Alt F9 |
| 실행 중지 | command(⌘) F2 | Ctrl F2 |
디버깅에서 가장 쓸모 있는 건 option(⌥) F9(커서 위치까지 실행)이다. 중단점을 여러 개 찍는 대신, 보고 싶은 줄에 커서를 놓고 option(⌥) F9를 누르면 거기까지 실행된다. 임시 중단점을 만들었다 지우는 번거로움이 없다.
shift(⇧) F7(Smart Step Into)은 한 줄에 메서드 호출이 여러 개일 때 쓴다. 일반 F7은 첫 번째 호출로 바로 들어가지만, shift(⇧) F7은 어떤 메서드로 들어갈지 선택할 수 있다.
Git / VCS
| 기능 | Mac | Windows / Linux |
|---|---|---|
| 커밋 | command(⌘) K | Ctrl K |
| 푸시 | command(⌘) shift(⇧) K | Ctrl Shift K |
| 업데이트 (Pull) | command(⌘) T | Ctrl T |
| 변경사항 롤백 | command(⌘) option(⌥) Z | Ctrl Alt Z |
| VCS 작업 팝업 | control(⌃) V | Alt ` |
command(⌘) K → 커밋 메시지 작성 → command(⌘) shift(⇧) K로 푸시. 이 흐름이 손에 붙으면 터미널을 열 일이 줄어든다. command(⌘) option(⌥) Z(롤백)는 파일 단위로 변경을 되돌릴 수 있어서, git checkout 대신 쓰기 좋다.
control(⌃) V(VCS 팝업)는 브랜치 생성, 머지, 스태시 같은 Git 작업을 한 곳에서 접근할 수 있는 메뉴다. 각 기능의 단축키를 따로 외우지 않아도 여기서 찾으면 된다.
창 & 탭 관리
| 기능 | Mac | Windows / Linux |
|---|---|---|
| Project 패널 토글 | command(⌘) 1 | Alt 1 |
| Git 패널 토글 | command(⌘) 9 | Alt 9 |
| 에디터 전체화면 | command(⌘) shift(⇧) F12 | Ctrl Shift F12 |
| 현재 탭 닫기 | command(⌘) W | Ctrl F4 |
| 이전 / 다음 탭 이동 | command(⌘) shift(⇧) [ / ] | Alt ← / → |
| 액션 검색 | command(⌘) shift(⇧) A | Ctrl Shift A |
command(⌘) shift(⇧) F12는 에디터 영역을 최대화한다. 사이드바와 하단 패널이 전부 사라지고 코드만 남는다. 집중해서 읽거나 쓸 때 유용하고, 다시 누르면 원래 레이아웃으로 돌아온다.
command(⌘) shift(⇧) A(액션 검색)는 단축키를 모를 때 쓰는 단축키다. 기능 이름을 영어로 검색하면 해당 기능과 지정된 단축키를 함께 보여준다. 여기서 찾아 쓰다 보면 자연스럽게 외워진다.
단축키를 한 번에 다 외우는 사람은 없다. 마우스로 하던 동작 중 가장 자주 반복하는 것 하나를 골라서 단축키로 바꾸는 것부터 시작하면 된다. 일주일에 하나씩이면 한 달 뒤에는 손이 먼저 움직인다. 단축키가 기억 안 나면 command(⌘) shift(⇧) A(액션 검색)를 열어 기능 이름으로 찾으면 단축키도 함께 표시된다.


Loading comments...