IntelliJ 익숙해지기

IntelliJ 익숙해지기

Intro

  • 개발자의 자기개발은 사이드 프로젝트나 새로운 언어 및 프레임워크에 치중된다.
  • 트렌드만 쫓는게 아니라 개인의 생산성을 생각하자.
  • IDE 활용으로 2시간 분량을 1시간에 한다면 그만큼 자기개발 할 시간이 늘어 난다.

Community VS Ultimate

  • 커뮤니티는 자바,그루비, 깃 사용 가능
    웹관련(톰캣,jsp,스프링부트등 ) 사용 못함
  • 얼티메이트는 유료, 대신 제한 없음
  • 학생은 무료로 사용 가능

ToolBox

  • Jetbrain의 모든 툴의 설치/삭제및 설정이 가능
  • 세팅에서 Heap Size도 간단히 입력해서 가능
    지금까지는 이클립스처럼 설정파일에서 설정함.
  • 힙사이즈는 8G에서는 1G, 16G 2~4G 추천
  • 업데이트 기준을 EAP(Preview 버전)을 할 수도 있음 (안정성 보장 x)

단축키 나타내는 플러그인

  • 윈도우와 리눅스 맥이 전부 단축키가 다름
  • 플러그인에서 ‘presentation assistant’를 설치하면 단축키를 누를때 다른 OS의 어떤 단축키인지 알 수 있다.
  • 강좌나 과정을 보여줘야할 떄 유용한듯

프로젝트 생성시 기초

  • 일일히 오른쪽버튼으로 팝업에서 new를 할 필요없이 바로 패키지나 클래스 생성 가능

    • 맥: Command+n
    • 윈도우,리눅스 : Alt + Insert
  • 실행 환경 실행

    • App1,App2 클래스가 있고 둘다 메인 클래스가 있을 때 App1에서 출력하고 App2에 포커스가 가 있을때 다시 이전것을 실행 시키고 싶은 경우 App1로 커서를 움직여서 하는게 아니라 바로 이전 실행했던 부분을 다시 실행 할 수 있다.
    • 이전실행 단축키 : shift+F10(), shift+F9는 디버그
    • 현재 포커스 있는 곳에서 수행하려면 ctrl+shift조합으로 실행
    • 그냥 쉬프트를 하면 포커스가 아닌 우측상단에 나와있는 클래스기준으로 수행된다

라인 처리

맥북의 ctrl,command 기능이 윈도우에서 ctrl로 대체되는 경우가 많다.
맥북의 Option 기능이 윈도우에서 Alt로 대체되는 경우가 많다.

  • 라인복제: ctrl+d(맥:Command+d)

    • 현재라인을 복사해 밑줄에 추가
    • 블럭설정을 하면 블럭 내용을 현재 위치에 복붙함
  • 라인삭제: ctrl + y(맥:Command+BackSpace)

  • 라인 합치기

    1
    2
    3
    4
    System.out.println("동해물과백두산이" +
    "마르고닳도록" +
    "하느님이보우하사" +
    "우리나라만세");
    • 이처럼 라인이 나누어졌을때 합치기 위해서 일일히 연산자 없애고 문자열 복붙할 필요가 없이 합할 수 있다.
    • 단축키 : Shift+Ctrl+J(맥:동일, J가 Join을 의미)
    • 커서 위치에 상관없이 커서의 라인을 기준으로 한다.
  • 라인 옮기기

    • 라인을 위아래로 옮기기가 가능, 블럭단위도 가능
    • 2가지 방법
    • 라인 이동
      • Shift+Alt+화살표(위,아래)
      • 해당메서드 밖도 가능, 문법 오류 무시하고 진행
    • 구문 이동
      • Shift+Ctrl+화살표(위,아래)
      • 해당메서드 안에서만, 문법 오류 안나게 도와줌
  • 엘리먼트 옮기기

    1
    2
    3
    <html>
    <h1 id="testid" onclick="this" ></h1>
    </html>
    • 위의 html의 요소인 id와 onclick을 바꾸고 싶다면? 복사붙이기? no!
    • 요소에 커서를 위치한후 shift+ctrl+alt+좌우화살표로 엘리먼트 이동 가능

코드 즉시 보기

  1. 인자값 즉시 보기
  • 메소드나 생성자 사용할때 필요한 인자를 찾으려 일일히 구현 부분을 볼 필요 없음
  • 메소드 가로안()에서 단축키
  • 단축키 : Ctrl+P(맥: Command+P)
  1. 코드 구현부 즉시 보기
  • 특정 메소드가 궁금할떄 해당 메소드가 구현된 클래스를 찾아갈 필요없이 바로 확인
  • 단축키 : Shift+Ctrl+I (맥:ctrl+Option+Space)
  • ESC로 사라짐
  • 메소드에서 사용시 메소드 구현부 확인(생성자도 마찬가지임)
  • 인스턴스 변수명에서 사용시 해당 변수의 생성(new부분)을 확인
  • 클래스에서 사용시 클래스의 전체 코드 확인 가능
  • 얼티메이트 버전의 경우 html의 link에 .js파일이나 css등 웹 개발 관련 부분도
    바로 내용 확인 가능
  1. Doc 즉시 보기
  • 보통 구글 검색이나 오라클 가서 문서를 보게 되는데 그럴 필요가 없음
  • 단축키: Ctrl+Q (맥: F1)
  • 바로 자바 Doc을 볼 수 있음
  • 얼티메이트는 웹관련도 가능하다.
    • 예) JavaScript에서 console.log에서 console에서 해도 설명이 나옴
    • 자바doc이 없어도 MDN(모질라파폭쪽 공식문서)의 문서가 나옴

포커스 에디터 (이건 특별한 기능이기보단 일반 워드나 이클립스랑 거의 동일)

  1. 단어별 이동
  • 같은행에서 이동할떄 마우스 쓰는것은 생산성에 도움이 안됨
  • 이클립스나 다른 워드처럼 ctrl+좌우화살표로 단어 이동 가능
  • 맥에서는 Option누르고 화살표
  1. 단어별 선택
  • 이것도 워드나 이클립스처럼 shift 누른상태에서 ctrl+화살표로 단어 선택 가능
  • 맥에서는 당연히 shift누른상태에서 Option+화살표
  1. 라인 첫/끝 이동
  • 윈도우에서는 Home, End
  • 맥에서는 Fn+좌우 화살표
  1. 라인 전체 선택
  • 맥: 위와의 조합으로 Shift누른 상태에서 Fn+화살표로 라인 전체 선택 가능
  • 윈도우는 Shift+Home, End
  1. Page Up/Down
  • 맥에서는 페이지 업다운 없음
  • 이 기능을 이용하면 25라인 한번에 이동
  • FN + 위아래 화살표
  • 윈도우에서는 그냥 페이지업/다운을 쓰자 ㅎㅎ

포커스 특수키

  1. 포커스 범위 한단계씩 늘리기
  • 현재 커서 위치에서 블럭을 정한다.
  • 처음엔 키워드부터 시작해서 점점 블럭을 올린다.
  • 블럭 늘리기 : ctrl+w (맥: Option+Up)
  • 블럭 줄이기 : shift+ctrl+w (맥: Option+Down)
  • 메소드처리에서 가로가 많을 때 블럭복사 및 처리를 해야할 경우 유용하다.
  1. 포커스 뒤로/앞으로 가기
  • 코딩하다가 Undo 하거나 Redo할때 ctrl+z, shift+ctrl+z
  • 포커스도 이전 포커스, 혹은 다시 앞으로 돌릴 수 있다.
  • backward 단축키:ctrl+alt+left (맥:Option+[ )
  • forward 단축키:ctrl+alt+Right (맥:Option+] )
  1. 멀티 포커스
  • 동일 코드를 한번에 바꾸고 싶을때
  • 문자열 처리에 자주 처리하는 기능
  • 단축키: (맥:Option 2번(누름유지)+방향키 위/아래 )
  1. 오류 라인으로 자동 포커
  • 오류가 있으면 그쪽으로 포커싱
  • 단축키: F2
  • 오류가 해결되면 다음 에러로 포커싱

검색

  1. 텍스트

  2. 현재 파일에서 검색
    * ctrl+f (맥: Command+F)

  3. 현재 파일에서 교체
    * ctrl+r (맥: Command+r)
    * 첫번째 버튼 Replace : 현재 찾아서 포커싱된 부분만 교체
    * Replace All : 현재 창 전체 교체

  4. 전체에서 검색
    * shift+ctrl+f (맥: Command+shift+F)

  5. 전체에서 교체
    * * shift+ctrl+r (맥: Command+shift+r)

  6. 정규표현식으로 검색, 교체
    * 1~4에서 옆에 체크란에 Regex를 체크하면 사용가능

  7. 기타

  8. 파일 검색
    * Shift+Ctrl+N (맥: Shift+Command+O)

  9. 메소드 검색
    * Shift+Ctrl+ALT+N (맥: Alt+Command+O)
    * 클래스가 기억이 안나고 메소드만 기억날때도 괜찮

  10. Action 검색 중요
    * Shift+Ctrl+a (맥: Shift+Command+a)

  11. 최근 열었던 파일 목록 보기(Recent files)
    * Ctrl+e (맥: Command+e)

  12. 최근 수정한 파일 목록 보기(Recently Edited files)
    * Shift+Ctrl+e (맥: Shift+Command+e)

자동완성

IDE의 생산성에서 가장 큰 영향을 주는 것이 자동완성이라고 생각한다.

  1. 스마트 자동완성
  • ctrl+space은 일반완성으로 모든 케이스가 다 들어가 있음. 틀릴 수도 있다.
  • ctrl+shift+space가 단축키 : 일반완성보다 많이 스마트
  1. 스태틱 메소드 자동완성
  • @Test에서 많이 사용되는 assertThat은 static 메소드
  • 스마트 자동완성으로 해도 나오지 않음
  • alt+enter를 눌러서 제안을 보아도 나오질 않는다.
  • ctrl+space x2
  1. Getter/Setter/생성자 자동완성
  • (맥: Command+n)
  1. Override 메소드 자동완성
  • ctrl+I

라이브 템플릿

  • 장문의 코드를 약어로 가능
  • psvm : 메인메소드 생성
  • sout : System.out.println()
    (이클립스에서 syso여서 개인적으로 적응하기 제일 어려운 부분)
  • ifn : if null 코드 생성
  • inn :
  • 기억이 가물가물할때 한번에 목록보기
    • 현재 포커스된 위치에서 나올 수 있는 모든 템플릿 목록 보기
    • 단축키 : ctrl+j (맥:Command+J)
    • 시간되면 한번 쫙 읽어보자.
  • 자주쓰는 커스텀한 코드를 라이브 템플릿에 추가하기
    • Action 검색에서 live templates 검색
    • 추가 가능

리팩토링

  1. Extract
  • 지정한 코드를 별도의 파라미터, 클래스로 추출할 수 있는 기능
  • 메뉴 Refactor의 Extract 하위에서 찾아 볼 수 있다.
  1. 변수 추출하기(Variable)
    * ctrl+alt+v (맥:Option+Command+v)
    * 에버노트 켜져있으면 에버노트 스크랩이 우선순위니 단축키 꺼놓을 것

  2. 파라미터 추출하기(Parameter)
    * ctrl+alt+p (맥:Option+Command+p)
    * delegate via overloading method를 선택하면 따로 오버로딩 메소드를 만든다.

  3. 메소드 추출하기(Method)
    * ctrl+alt+m (맥:Option+Command+m)
    * 선택한 코드를 메소드로 뽑아 냄

  4. 이너클래스 추출하기
    * 엄밀히 말하면 extract가 아닌 move 기능
    * 이너클래스 : 특정클래스 내부에서만 사용하는 클래스
    * 개발이나 확장에 따라 이 이너클래스를 별도의 클래스로 뽑아낼 때 사용
    * 다른 클래스 안으로 그냥 옮기기 위해서도 사용 가능.
    * 단축키 : F6

  5. 기타

  6. 이름 일괄 변경
    * Rename
    * 파라미터, 메소드 , 클래스등 전부 가능.
    * Shift+F6

  7. 타입 일괄 변경
    * 메소드의 반환값 변경시 바꿀 코드가 굉장히 많음
    * 이기능을 사용하면 메소드를 사용하는 쪽도 전부 시그니처를 바꿔줌
    * Type Migration
    * shift+ctrl+f6(맥: Command+Shift+F6)

  8. Import 정리
    * 이클립스 키만 기억난다 자꾸..;
    * ctrl+alt+o(맥:ctrl+Option+O)
    * Action검색의 Optimize import on 들어가서 “Auto Import”를 On하면 자동으로..
    * 필요에 따라서 on/off를 하자.

  9. 코드 자동 정렬
    * ctrl+alt+L(맥: Command+Option+L)

디버깅

jetbrain의 디버깅 기능은 툴에 상관없이 거의 똑같다.

  1. 디버그 모드로 즉시 실행
  • 위에서 한번 봤음
  1. 디버그 모드로 이전 실행
  • 위에서 한번 봤음
  1. Resume
  • 다음 브레이크 포인트로 넘어감
  • F9 (맥: Option+Command+R)
  1. Step Over
  • 브레이크 포인트에서부터 다음 한줄로
  • F8
  1. Step Into
  • Step over보다 상세히
  • 실행되는 메소드의 하나하나 단계까지 볼 수 있음
  • F7
  1. Step Out
  • Step Into로 원래 브레이크 포인트보다 안으로 들어왔을때 다시 밖으로 나감
  • 원래 브레이크 포인트 레벨로 나갈 수 있음
  • Shift+F8
  1. Conditional break
  • for문 100만개중 57만번째? 혹은 반복문중 툭별한 조건일때 break?
  • 브레이크 포인트 우클릭해서 컨디션닝
  • 자바 코드처럼 작성 가능
  1. Evaluate Expression
  • 테스트에서 repo.save()를 이용해서 db에 데이터를 저장하였을때 확인?
  • db를 직접 열거나 불러와서 확인할 수도 있겠지만 repository를 통해 확인가능?
  • 가능하나 굳이 테스트에 또 귀찮게 코딩?
  • 이를 해결해주는것이 이 기능
  • breakpoint 걸린상태에서 코드를 실행해 볼 수 있음.(repo.findAll())
  • 확인등으로 인한 단발성 코드가 필요한 경우 이런식으로 처리
  • Alt+F8 (맥:Option+F8)
  1. Watch
  • 변수등을 등록
  • 브레이크포인트에서 다음 브레이크 포인트까지의 변화를 확인할 수 있음
  • 한줄 한줄 실행하면서 변화를 보고 싶을때 사용
  • 단축키 없음

Git

  1. Git 뷰 : Alt+9(맥: Command+9)
  2. Git Option 팝업: Alt+` [TAB위](맥: ctrl+v)
  3. Git history : 2번 팝업에서 4
  4. Git branch : 2번 팝업에서 7
  5. Git commit : ctrl+k(맥: Command+k)
  6. Git push : 5번에서 shift 추가
  7. git pull : 단축키 없음. 커스텀 등록하거나 action검색에서 git pull 사용

GitHub

  1. 기존 프로젝트 깃허브 연동
  • Action 검색에서 ‘share github’
  • 원래 메뉴는 vcs메뉴->import into VC -> share project on GitHub
  1. 깃허브 프로젝트 clone
  • check out from Version Control에서 Git선택

플러그인

  • Action 검색에서 “plugins”
  • Browse Repositories로 수많은 플러그인을 검색할 수 있음
  • sort by Downloads로 정렬해보면 많은 사람들이 다운받고 검증받은 플러그인 확인.
  • .ignore : ignore 파일 추가 및 작성시 파일 목록의 자동 완성 지원
  • presentation assistant: 단축키 클릭시 캡션으로 뜸
  • bashSupport: .sh파일 생성시 자동완성등 지원
  • Material Theme UI
  • translator

Related POST

공유하기