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
4System.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+좌우화살표로 엘리먼트 이동 가능
코드 즉시 보기
- 인자값 즉시 보기
- 메소드나 생성자 사용할때 필요한 인자를 찾으려 일일히 구현 부분을 볼 필요 없음
- 메소드 가로안()에서 단축키
- 단축키 : Ctrl+P(맥: Command+P)
- 코드 구현부 즉시 보기
- 특정 메소드가 궁금할떄 해당 메소드가 구현된 클래스를 찾아갈 필요없이 바로 확인
- 단축키 : Shift+Ctrl+I (맥:ctrl+Option+Space)
- ESC로 사라짐
- 메소드에서 사용시 메소드 구현부 확인(생성자도 마찬가지임)
- 인스턴스 변수명에서 사용시 해당 변수의 생성(new부분)을 확인
- 클래스에서 사용시 클래스의 전체 코드 확인 가능
- 얼티메이트 버전의 경우 html의 link에 .js파일이나 css등 웹 개발 관련 부분도
바로 내용 확인 가능
- Doc 즉시 보기
- 보통 구글 검색이나 오라클 가서 문서를 보게 되는데 그럴 필요가 없음
- 단축키: Ctrl+Q (맥: F1)
- 바로 자바 Doc을 볼 수 있음
- 얼티메이트는 웹관련도 가능하다.
- 예) JavaScript에서 console.log에서 console에서 해도 설명이 나옴
- 자바doc이 없어도 MDN(모질라파폭쪽 공식문서)의 문서가 나옴
포커스 에디터 (이건 특별한 기능이기보단 일반 워드나 이클립스랑 거의 동일)
- 단어별 이동
- 같은행에서 이동할떄 마우스 쓰는것은 생산성에 도움이 안됨
- 이클립스나 다른 워드처럼 ctrl+좌우화살표로 단어 이동 가능
- 맥에서는 Option누르고 화살표
- 단어별 선택
- 이것도 워드나 이클립스처럼 shift 누른상태에서 ctrl+화살표로 단어 선택 가능
- 맥에서는 당연히 shift누른상태에서 Option+화살표
- 라인 첫/끝 이동
- 윈도우에서는 Home, End
- 맥에서는 Fn+좌우 화살표
- 라인 전체 선택
- 맥: 위와의 조합으로 Shift누른 상태에서 Fn+화살표로 라인 전체 선택 가능
- 윈도우는 Shift+Home, End
- Page Up/Down
- 맥에서는 페이지 업다운 없음
- 이 기능을 이용하면 25라인 한번에 이동
- FN + 위아래 화살표
- 윈도우에서는 그냥 페이지업/다운을 쓰자 ㅎㅎ
포커스 특수키
- 포커스 범위 한단계씩 늘리기
- 현재 커서 위치에서 블럭을 정한다.
- 처음엔 키워드부터 시작해서 점점 블럭을 올린다.
- 블럭 늘리기 : ctrl+w (맥: Option+Up)
- 블럭 줄이기 : shift+ctrl+w (맥: Option+Down)
- 메소드처리에서 가로가 많을 때 블럭복사 및 처리를 해야할 경우 유용하다.
- 포커스 뒤로/앞으로 가기
- 코딩하다가 Undo 하거나 Redo할때 ctrl+z, shift+ctrl+z
- 포커스도 이전 포커스, 혹은 다시 앞으로 돌릴 수 있다.
- backward 단축키:ctrl+alt+left (맥:Option+[ )
- forward 단축키:ctrl+alt+Right (맥:Option+] )
- 멀티 포커스
- 동일 코드를 한번에 바꾸고 싶을때
- 문자열 처리에 자주 처리하는 기능
- 단축키: (맥:Option 2번(누름유지)+방향키 위/아래 )
- 오류 라인으로 자동 포커
- 오류가 있으면 그쪽으로 포커싱
- 단축키: F2
- 오류가 해결되면 다음 에러로 포커싱
검색
텍스트
현재 파일에서 검색
* ctrl+f (맥: Command+F)현재 파일에서 교체
* ctrl+r (맥: Command+r)
* 첫번째 버튼 Replace : 현재 찾아서 포커싱된 부분만 교체
* Replace All : 현재 창 전체 교체전체에서 검색
* shift+ctrl+f (맥: Command+shift+F)전체에서 교체
* * shift+ctrl+r (맥: Command+shift+r)정규표현식으로 검색, 교체
* 1~4에서 옆에 체크란에 Regex를 체크하면 사용가능기타
파일 검색
* Shift+Ctrl+N (맥: Shift+Command+O)메소드 검색
* Shift+Ctrl+ALT+N (맥: Alt+Command+O)
* 클래스가 기억이 안나고 메소드만 기억날때도 괜찮Action 검색 중요
* Shift+Ctrl+a (맥: Shift+Command+a)최근 열었던 파일 목록 보기(Recent files)
* Ctrl+e (맥: Command+e)최근 수정한 파일 목록 보기(Recently Edited files)
* Shift+Ctrl+e (맥: Shift+Command+e)
자동완성
IDE의 생산성에서 가장 큰 영향을 주는 것이 자동완성이라고 생각한다.
- 스마트 자동완성
- ctrl+space은 일반완성으로 모든 케이스가 다 들어가 있음. 틀릴 수도 있다.
- ctrl+shift+space가 단축키 : 일반완성보다 많이 스마트
- 스태틱 메소드 자동완성
@Test
에서 많이 사용되는 assertThat은 static 메소드- 스마트 자동완성으로 해도 나오지 않음
- alt+enter를 눌러서 제안을 보아도 나오질 않는다.
- ctrl+space x2
- Getter/Setter/생성자 자동완성
- (맥: Command+n)
- Override 메소드 자동완성
- ctrl+I
라이브 템플릿
- 장문의 코드를 약어로 가능
psvm
: 메인메소드 생성sout
: System.out.println()
(이클립스에서 syso여서 개인적으로 적응하기 제일 어려운 부분)ifn
: if null 코드 생성inn
:- 기억이 가물가물할때 한번에 목록보기
- 현재 포커스된 위치에서 나올 수 있는 모든 템플릿 목록 보기
- 단축키 : ctrl+j (맥:Command+J)
- 시간되면 한번 쫙 읽어보자.
- 자주쓰는 커스텀한 코드를 라이브 템플릿에 추가하기
- Action 검색에서 live templates 검색
- 추가 가능
리팩토링
- Extract
- 지정한 코드를 별도의 파라미터, 클래스로 추출할 수 있는 기능
- 메뉴 Refactor의 Extract 하위에서 찾아 볼 수 있다.
변수 추출하기(Variable)
* ctrl+alt+v (맥:Option+Command+v)
* 에버노트 켜져있으면 에버노트 스크랩이 우선순위니 단축키 꺼놓을 것파라미터 추출하기(Parameter)
* ctrl+alt+p (맥:Option+Command+p)
* delegate via overloading method를 선택하면 따로 오버로딩 메소드를 만든다.메소드 추출하기(Method)
* ctrl+alt+m (맥:Option+Command+m)
* 선택한 코드를 메소드로 뽑아 냄이너클래스 추출하기
* 엄밀히 말하면 extract가 아닌 move 기능
* 이너클래스 : 특정클래스 내부에서만 사용하는 클래스
* 개발이나 확장에 따라 이 이너클래스를 별도의 클래스로 뽑아낼 때 사용
* 다른 클래스 안으로 그냥 옮기기 위해서도 사용 가능.
* 단축키 : F6기타
이름 일괄 변경
* Rename
* 파라미터, 메소드 , 클래스등 전부 가능.
* Shift+F6타입 일괄 변경
* 메소드의 반환값 변경시 바꿀 코드가 굉장히 많음
* 이기능을 사용하면 메소드를 사용하는 쪽도 전부 시그니처를 바꿔줌
* Type Migration
* shift+ctrl+f6(맥: Command+Shift+F6)Import 정리
* 이클립스 키만 기억난다 자꾸..;
* ctrl+alt+o(맥:ctrl+Option+O)
* Action검색의 Optimize import on 들어가서 “Auto Import”를 On하면 자동으로..
* 필요에 따라서 on/off를 하자.코드 자동 정렬
* ctrl+alt+L(맥: Command+Option+L)
디버깅
jetbrain의 디버깅 기능은 툴에 상관없이 거의 똑같다.
- 디버그 모드로 즉시 실행
- 위에서 한번 봤음
- 디버그 모드로 이전 실행
- 위에서 한번 봤음
- Resume
- 다음 브레이크 포인트로 넘어감
- F9 (맥: Option+Command+R)
- Step Over
- 브레이크 포인트에서부터 다음 한줄로
- F8
- Step Into
- Step over보다 상세히
- 실행되는 메소드의 하나하나 단계까지 볼 수 있음
- F7
- Step Out
- Step Into로 원래 브레이크 포인트보다 안으로 들어왔을때 다시 밖으로 나감
- 원래 브레이크 포인트 레벨로 나갈 수 있음
- Shift+F8
- Conditional break
- for문 100만개중 57만번째? 혹은 반복문중 툭별한 조건일때 break?
- 브레이크 포인트 우클릭해서 컨디션닝
- 자바 코드처럼 작성 가능
- Evaluate Expression
- 테스트에서 repo.save()를 이용해서 db에 데이터를 저장하였을때 확인?
- db를 직접 열거나 불러와서 확인할 수도 있겠지만 repository를 통해 확인가능?
- 가능하나 굳이 테스트에 또 귀찮게 코딩?
- 이를 해결해주는것이 이 기능
- breakpoint 걸린상태에서 코드를 실행해 볼 수 있음.(repo.findAll())
- 확인등으로 인한 단발성 코드가 필요한 경우 이런식으로 처리
- Alt+F8 (맥:Option+F8)
- Watch
- 변수등을 등록
- 브레이크포인트에서 다음 브레이크 포인트까지의 변화를 확인할 수 있음
- 한줄 한줄 실행하면서 변화를 보고 싶을때 사용
- 단축키 없음
Git
- Git 뷰 : Alt+9(맥: Command+9)
- Git Option 팝업: Alt+` [TAB위](맥: ctrl+v)
- Git history : 2번 팝업에서 4
- Git branch : 2번 팝업에서 7
- Git commit : ctrl+k(맥: Command+k)
- Git push : 5번에서 shift 추가
- git pull : 단축키 없음. 커스텀 등록하거나 action검색에서 git pull 사용
GitHub
- 기존 프로젝트 깃허브 연동
- Action 검색에서 ‘share github’
- 원래 메뉴는 vcs메뉴->import into VC -> share project on GitHub
- 깃허브 프로젝트 clone
- check out from Version Control에서 Git선택
플러그인
- Action 검색에서 “plugins”
- Browse Repositories로 수많은 플러그인을 검색할 수 있음
- sort by Downloads로 정렬해보면 많은 사람들이 다운받고 검증받은 플러그인 확인.
- .ignore : ignore 파일 추가 및 작성시 파일 목록의 자동 완성 지원
- presentation assistant: 단축키 클릭시 캡션으로 뜸
- bashSupport: .sh파일 생성시 자동완성등 지원
- Material Theme UI
- translator