IntelliJ - 단축키, Live Template

gzip·2023년 5월 26일
3
post-thumbnail

인터넷에 검색하면 이미 많은 정보를 찾을 수 있지만 제가 IntelliJ를 사용하면서 생산성을 많이 높여 주었다고 생각하는 단축키와 라이브 템플릿 몇 가지를 소개합니다.


단축키

macOS 기준으로 작성하였는데 윈도우에서는 설정 > Keymap에 들어가서 검색보면 단축키를 확인 할 수 있다.

Optimize Imports - ^⌥O

Reformat Code - ⌥⌘L

Introduce Variable - ⌥⌘V

변수로 한 번에 빼낼 수 있다.


Introduce Parameter - ⌥⌘P

파라미터로 빼낼 수 있다.


Inline Variable - ⌥⌘N

변수를 인라인으로 리팩토링


Complete Current Statement - ⇧⌘⏎

현재 구문을 완성시킨다. ;이나 괄호 등을 자동으로 만들어 구문을 완성시켜 준다.


Go to Test - ⇧⌘T

사용된 테스트로 바로 이동이 가능하다.


Paste From History - ⇧⌘V

복사했던 기록을 선택하여 다시 붙여넣기를 할 수 있다.


Column Selection Mode - ⇧⌘8

한 번에 수정할 때 편리하다.


Live Template

자주 사용하는 기본 라이브 템플릿

public static void main(String[] args) {  
	// soutm - 클래스와 메소드 이름 출력  
	System.out.println("Test.main");  
	  
	// soutp - 파라미터 이름과 값 출력  
	System.out.println("args = " + Arrays.toString(args));  
	  
	String name = "name";  
	
	// soutv - 변수 이름 값 출력  
	System.out.println("name = " + name);  
	  
	// sout  
	System.out.println();  
	  
	// iter  
	for (String arg : args) {  
	  
	}  
	  
	// itar  
	for (int i = 0; i < args.length; i++) {  
		String arg = args[i];  
	  
	}  
}

커스텀 라이브 템플릿

내가 커스텀한 라이브 템플릿을 구분하기 위해 따로 그룹을 만들어서 관리하고 있다.

로그 관련 라이브 템플릿

System.out 대신 로거를 사용하기 때문에 조금 수정하여 템플릿을 추가 했다.

private void test(String str1, int int1) {  
	// ldmp - 메소드명과 파라미터를 디버그 로그로  
	log.debug("test - str1 = {}, int1 = {}", str1, int1);  
	  
	String name = "name";  
	  
	// ldv - 변수를 디버그 로그로
	log.debug("name = {}", name);  
	  
	// ld  
	log.debug();  
}

log.debug 줄여 ld로 표시했고 mpv처럼 로그에 남길 값을 뒤에 추가하는 형식으로 만들었다.
log.infolog.warn, log.errorli, lw, le 처럼 만들었다.


ld

log.debug($END$);

ldv

log.debug("$EXPR_COPY$ = {}", $EXPR$);
nameExpressionDefault valueSkip if defined
EXPRvariableOfType("")"expr"
EXPR_COPYescapeString(EXPR)V

ldmp

log.debug($FORMAT$);
nameExpressionDefault valueSkip if defined
FORMAT아래 참고V
groovyScript("'\"' + _1 + (_2.isEmpty() ? '' : ' - ' + _2.collect{it + ' = {}'}.join(', ')) + '\"' + (_2.isEmpty() ? '' : ', ' + _2.collect{it}.join(', ')) ", methodName(), methodParameters())

테스트 관련 라이브 템플릿

기능 개발보다 테스트 코드를 작성하는데에 더 많은 시간을 소비하는 개발자들이 많을 거다.

nestedc

@Nested
@DisplayName("$DpName$")
class $ClassName$ {
    $END$
}
nameExpressionDefault valueSkip if defined
DpName
ClassName아래 참고testV
regularExpression(regularExpression(DpName, "[\\(+\\)+\\[+\\]+\\:+]", ""), "((\\s)*(,+|\\s+|-+|_+|\\.+)(\\s)*)+", "_")

(정규식을 더 간단히 만들 수 있을 거 같은데 익숙지 않아서 패스...)


bdd

@Test  
@DisplayName("$DpName$")  
void $MethodName$() {  
	// given  
	$END$  
	// when  
	  
	// then  
}
nameExpressionDefault valueSkip if defined
DpName
MethodNamenestedcClassNameExpression과 동일testV

bddp

@ParameterizedTest
@DisplayName("$DpName$")
@$Source$
void $MethodName$($Argument$) {
    // given
    $END$
    // when
    
    // then
}
nameExpressionDefault valueSkip if defined
DpName
Source
MethodNamenestedc의 ClassName의 Expression과 동일testV
Argument

0개의 댓글