IntelliJ Shortcuts

단축키도 공부해야해

6 minute read

생성

파일 생성

좌측의 프로젝트 파일 트리로 포커스된다. 마우스를 사용하지 않고 파일이나 패키지 생성을 가능하도록 한다.

  • 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 Into
  • F8 : 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: replace
  • COMMAND + 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 In
  • F8: Step over
  • SHIFT + F8: Step out. Step Into했다가 바로 나가서 다음줄에서 멈추는 기능이다.

    브레이크 포인트에서 마우스 오른쪽을 눌러서 조건을 설정할 수 있다.

  • OPTION + F8: 이클립스에서 쓰던 평가식이다. 복잡한 현재 상태를 확인할 수 있다.

GIT 메뉴

상단 View - Tool window - git으로 창 열수있다. 코드상에서 CONTROL + V를 누르면 깃 팝업창이 뜬다. 보통 이걸 통해 필요한걸 연다. 팝업창 앞에 번호가 있는데 번호를 누른다.

  • COMMAND + D: diff 보기
  • COMMAND + K: commit
  • COMMAND + SHIFT + K: Push
  • PULL은 단축키가 없다. 액션 검색에서 git pull을 검색하는게 편하다.