IntelliJ Shortcuts
단축키도 공부해야해
생성
파일 생성
좌측의 프로젝트 파일 트리로 포커스된다. 마우스를 사용하지 않고 파일이나 패키지 생성을 가능하도록 한다.
- Mac OS ->
COMMAND + 1
- Windows ->
ALT + 1
현재 선택된 위치에서 생성할 수 있는 종류(Java class, Package, …)의 리스트가 나온다. 예를 들어 프로젝트 root에서는 생성 목록에 Package가 없는데, 디렉토리에서 해당 단축키를 누르면 Package도 나오는 식이다.
- Mac OS ->
COMMAND + N
- Windows ->
ALT + INSERT
디렉토리 추가시
Src/main/java
이런식으로 슬래시(/)로 구분해서 만들면 hierarchy대로 디렉토리가 만들어진다.
구문 자동완성
psvm
: public static void main(String[] args)sout
: System.out.println()soutv
: 지역변수 등의 출력 포맷 제공soutm
: 메소드명 출력 포맷 제공soutp
: 파라메터 출력 포맷 제공iter
: foreach 문 자동 생성
라이브 템플릿
라이브 템플릿(코드 템플릿)은 자주쓰는 함수에 대한 축약어 기능이다. Command + j
를 치면 현재 사용 가능한 축약어가 모두 나온다.
System.out.println(); // sout
System.out.println("this = " + this); // soutv
System.out.println("HelloServlet.service"); // soutm
System.out.println("req = " + req + ", resp = " + resp); // soutp
- 라이브 템플릿은 설정에서 만들 수 있다.
- 예를 들어
ifn
을 치고 탭을 누르면 특정 변수에 대해if (var == null) {
형태를 만들어준다. - 직접 만들어보자면 이런 애노테이션을 묶어서 한번에 만들 수도 있을 것이다.
@Repository
@RequireArgConstructor
@Transaction
실행
메인메소드 실행
현재 포커스된 파일에서의 main 메소드를 실행시킨다.
- Mac OS ->
CONTROL + SHIFT + R
- Windows ->
CTRL + SHIFT + F10
이전에 실행했던 main 메소드를 실행시킨다. 다른 파일을 보고 있을 때 활용할 수 있다.
- Mac OS ->
CONTROL + R
- Windows ->
SHIFT + F10
디버그
디버그 모드로 main 메소드를 실행시킨다.
- Mac OS ->
CONTROL + D
-
Windows ->
SHIFT + F9
F7
: Step IntoF8
: Step Over-
SHIFT + F8
: Step Out (현재 메소드의 밖으로 이동) - Mac OS ->
OPTION + F8
-
Windows ->
ALT + F8
- Evaluate Expression.
평가식을 활용하여 디버깅을 할 수 있다. 브레이크가 걸린 상태에서 사용할 수 있다.
라인 수정하기
COMMAND + D
: 현재 커서가 있는 라인을 복제하여 아래줄에 추가한다SHIFT + DELETE
: 현재 라인을 삭제한다CONTROL + SHIFT + J
: 여러 라인의 문자열 합치기
String query = "SELECT * " // 여기 커서를 두고 단축키를 두 번 실행
+ "FROM member "
+ "WHERE member.name = 'ksh'";
// 실행 결과
String query = "SELECT * FROM member WHERE member.name = 'ksh'";
OPTION + SHIFT + 방향키
: 라인을 이동시킨다COMMAND + SHIFT + 방향키
: 구문 안에서만 라인을 이동시킨다. 특별한 일이 없다면 권장되는 사항.OPTION + SHIFT + COMMAND + 좌우 방향키
: 엘리먼트 단위로 옮기기
<h1 id="title" name="name">
// 실행결과
<h1 name="name" id="title">
private void print(HttpServletRequest req, HttpServletResponse resp)
// 실행결과
private void print(HttpServletResponse resp, HttpServletRequest req)
코드 즉시보기
COMMAND + P
: 파라메터 확인하기
OPTION + SPACE
: 선언부를 즉시 확인
F1
: Javadoc 확인
Search 기능
COMMAND + D
: 단축키, 히스토리, 코드 포함해서 주석 등도 검색이 가능하다.COMMAND + O
: 쉬프트를 두번 눌러서 트리거할 수도 있다. 각종 라이브러리, 스프링과 같은 프레임워크 범위까지도 포함해서(예를 들면 BeanFactory 클래스라던지) 각종 정보를 검색할 수 있다.COMMAND + F
: 검색COMMAND + R
: replaceCOMMAND + SHIFT + F
: 프로젝트 전체에서 검색, 전체에서 교체도 가능COMMAND + SHIFT + O
: 파일검색 원하는 파일 열기, 동일한 이름 파일이 많을 때는{패키지명}/{파일명}
이렇게 검색하면 된다.COMMAND + OPTION + O
: 원하는 심볼을 검색한다. 메서드 명 등을 검색할 수 있다.COMMAND + SHIFT + A
: 인텔리제이 액션 검색 => 원하는 기능 메뉴 안가고도 찾을수 있다. => 매우 중요!COMMAND + E
: 최근 열었던 파일들이 팝업으로 나온다COMMAND + SHIFT + E
: 최근 수정한 파일만 나온다.
포커스 기능
OPTION + 방향키
: 단어단위로 이동SHIFT + OPTION + 방향키
: 단어단위로 선택fn + 방향키
: home / end같은 기능이다. 특히나 맥에서 유용하다.SHIFT + fn + 방향키
: 위와 같은 기능인데 선택까지 가능하다.fn + 위아래
: 페이지 업/다운같은 기능이다.SHIFT + ENTER
: 커서가 중간에 있어도 그냥 아래줄에 빈줄만들고 내려간다.OPTION + 방향키 위
: 한단어 선택, 계속 반복하면 점점 늘어남. 단순 단어단위로 늘어나는게 아니라 파라메터면 파라메터 다음꺼, 파라메터가 다 선택되면 함수 전체 이런식으로 계속 의미적으로 늘어난다.OPTION + 방향키 아래
: 위에서 선택한거의 반대로 범위가 줄어든다.COMMAND + {
: 이전 포커스(전에 마우스로 찍었던)로 돌아간다.-
COMMAND + }
: 원래 포커스로 돌아간다. - 멀티포커스: VSCode에서 쓰던 그 좋은 기능이다.
public void save(Order order) {
entityManager.persist(order);
entityManager.persist(order);
entityManager.persist(order);
entityManager.persist(order);
}
이런 코드에서 persist
를 다 save
라는 단어로 바꾸고 싶다면, persist 위에서 옵션키를 두번 누른 상태에서 방향키를 아래로 누르면 계속 커서가 늘어난다.
SHIFT + ALT + 왼쪽클릭
: 멀티 커서를 자유롭게 선택가능하다.COMMAND + SHIFT + U
: 선택한 영역의 대소문자 변경한다. 멀티 커서로 편집하다가 get붙이고 뒤에 한글자 대문자한다던지할때 유용하다.ALT + J
: 같은 문자 선택(VSCode의 Alt + D와 같은 기능이다)F2
: 오류가 난곳으로 포커스 이동
자동완성 기능
SHIFT + CONTROL + SPACE
: 사용가능한 것만 보여주는 스마트 자동완성 기능- 파일 생성때 썼던
COMMAND + N
을 클래스 내에서 누르면 자동 생성가능한 목록이 나온다.
- 오버라이딩 단축키
CONTROL + O
: Class 안에서 control + o 누르면 오버라이드 목록이 뜬다.
CONTROL + I
: 추상클래스를 상속할때 implement해야될 메소드들 자동생성
리팩토링 기능
- Extract variable
System.out.println(String.format("%d + %d", 1, 2));
System.out.println(String.format("%d + %d", 1, 2));
저 인자 두개를 따로 변수로 뽑아내고 싶을때, 일단 대충 옵션 + 화살표 위로하면 적절한 범위를 쉽게 세팅할 수 있을것이다. 그다음에 COMMAND + OPTION + V
를 누르면 위에 두개를 모두 바꿀건지 창이 뜨는데 선택 후 엔터를 치면,
String format = String.format("%d + %d", 1, 2);
System.out.println(format);
System.out.println(format);
이렇게 뽑혀나온다.
- Extract parameter
void extractParam(int x) {
System.out.println(10);
System.out.println(10);
}
만약에 저 10이 인자로 들어온 x라서 변경을 하고 싶다면 COMMAND + OPTION + P
를 눌러서 변경할 수 있다.
void extractParam(int x) {
System.out.println(x);
System.out.println(x);
}
COMMAND + OPTION + M
: extract method. 특정영역 선택해서 메소드로 뽑을 수 있다. 굉장히 많으 쓴다.
F6
: Inner Class를 외부로 뽑아내는 기능SHIFT + F6
: 이름변경(변수, 클래스, 필드 등등)COMMAND + SHIFT + F6
: 타입 변경
private String calculate() { return "1"; }
String num = calculate();
=>
private Integer calculate() { return 1; } // 리턴의 값은 직접 변경해야 한다.
Integer num = calculate();
CONTROL + OPTION + O
: 사용하지 않는 import 제거. 근데optimize imports
액션을 찾아서 on으로 바꾸면 단축키없이도 그냥 알아서 해준다.COMMAND + OPTION + L
: 정렬(포맷팅)CONTROL + T
: 함수내에서 블록지정해서 컨트롤 티 누르고 extract method로 하면 다른 함수로 뽑아내고 호출하는걸로 변경 가능하다.OPTION + COMMAND + V
:memberRepository.findAll()
이렇게 있을때 누르면,List<Member> all =
이 앞에 붙고 커서도 all 앞에 붙는다.iter
를 치면 그 안에 지역변수 for문이 생성된다.SHIFT + F6
: 클래스 명을 변경하고 파일 명도 같이 바꿔준다.
memberRepository.save(member);
// 여기서 커맨드 옵션 브이를 누르면 아래처럼 변수로 뽑느다
// >>
long save = memberRepository.save(member);
List<Member> result = entityManager.createQuery("select m from Member m", Member.class).getResultList();
return result; // 여기서 커맨드 옵션 n을 누르면 합친다.
// >>
return entityManager.createQuery("select m from Member m", Member.class).getResultList();
CONTROL + CONTROL
: 어떤 동작도 하는 창 열린다.SHIFT + SHIFT
: 통합검색창
디버그
CONTROL + SHIFT + D
: 현재 포커스에 있은 함수를 디버그 모드로 실행CONTROL + D
: 이전 포커스에 있던 함수 디버그 모드로 실OPTION + COMMAND + R
: 브레이크포인트 걸린상태에서 리F7
: Step InF8
: Step overSHIFT + F8
: Step out. Step Into했다가 바로 나가서 다음줄에서 멈추는 기능이다.브레이크 포인트에서 마우스 오른쪽을 눌러서 조건을 설정할 수 있다.
OPTION + F8
: 이클립스에서 쓰던 평가식이다. 복잡한 현재 상태를 확인할 수 있다.
GIT 메뉴
상단 View - Tool window - git으로 창 열수있다. 코드상에서 CONTROL + V
를 누르면 깃 팝업창이 뜬다. 보통 이걸 통해 필요한걸 연다. 팝업창 앞에 번호가 있는데 번호를 누른다.
COMMAND + D
: diff 보기COMMAND + K
: commitCOMMAND + SHIFT + K
: Push- PULL은 단축키가 없다. 액션 검색에서
git pull
을 검색하는게 편하다.