IDEA Live Lemplates

一、IDEA Setteing界面

Setting → Editor → Live LemplatesIDEA Live Lemplates_第1张图片

二、编辑 Llive Lemplate

点击+按钮,点击Template Group添加一个分组;选中分组,再通过加号添加Live Template
IDEA Live Lemplates_第2张图片

设置模板

IDEA Live Lemplates_第3张图片

  • Abbreviation(缩进名):即之后代码输入pssd按快捷键即可生成private static String var;
  • Edit variables(编辑编写):编辑变量,包括顺序,变量功能等,详见下方备注
  • Description(注释):注释模板功能
  • Template text(模板主体):\$x\$ x为变量,\$END\$为自带变量,即最后光标停留位置
  • Applicable(应用范围):指明在什么文件什么情况下使用。一般默认勾选java就可以
  • options(快捷键):即输入pssd后按下Enter还是Tab生成模板。作者一般使用Tab键,一方面是防止与自带模板冲突,另一方面与shell快捷键一至
  • Reformate According to Style:自动进行代码格式化。不勾选代码不会自动缩进换行

三、自带变量参数

IntelliJ IDEA 实时代码模板是有变量参数设置的(全部预定义函数,具体可参见官方文档)

1. 预定义变量

IntelliJ IDEA Live Templates 自带两个预定义变量参数:

变量名 描述
$END$ 光标的最后位置(即:编辑完之后光标所处的最后位置)
$SELECTION$ 填充被选中内容(即:设置环绕实时代码)

2. 预定义函数

变量名 描述
className() 返回当前类名
classNameComplete() 选择类名进行返回
complete() 替代变量的代码
completeSmart() 替代变量智能类型代码
currentPackage() 当前包全路径
date(sDate) 当前时间,可以填写格式
fileName() 文件名与扩展
fileNameWithoutExtension() 文件名不含扩展
lineNumber() 返回当前行号
methodName() 返回所在方法名
methodParameters() 返回当前方法参数列表,数组形式,形如[a, b]
time(sSystemTime) 返回当前时间,可以设置格式
user() 返回当前系统用户
camelCase(String) 字符串转换
capitalize(String) 将参数的第一个字母大写

四、应用场景

多加$END$是为了输入变量后,按enter键直接跳到下一行

1. 带注释的静态变量

/**
 * $VAR2$
 */
private static String $VAR1$;
$END$

2. 判断条件

if (StringUtil.isNotBlank($VAR1$)) {
     
    $END$
}

3. 循环语句

例如:counter.fori + tab,IDEA会自动补全for循环
同理,使用list.iter + tab 也有相应操作

五、Live Lemplates 模板

1.普通模板

.groupBy

// Description(注释)
.collect(Collectors.groupingBy(e -> \$END\$));

// Template text(模板主体)
.collect(Collectors.groupingBy(e -> $END$));

.join

// Description(注释)
.collect(Collectors.joining("\$END\$"));

// Template text(模板主体)
.collect(Collectors.joining("$END$"));

.toList

// Description(注释)
.collect(Collectors.toList());

// Template text(模板主体)
.collect(Collectors.toList());

.toSet

// Description(注释)
.collect(Collectors.toSet());

// Template text(模板主体)
.collect(Collectors.toSet());

ife

// Description(注释)
if(\$END\$){
     }else{
     }

// Template text(模板主体)
if($END$){
     

}else{
     

}

eif

// Description(注释)
else if(\$END\$){
     }

// Template text(模板主体)
else if($END$){
      

}

loggerDefineStatic

// Description(注释)
define logger by Class

// Template text(模板主体)
private static final Logger logger = LoggerFactory.getLogger(\$CLASS_NAME\$.class);

设置 Edit variables

Name Expression Default value Skip if defined
CLASS_NAME className()

loggerDefineThis

// Description(注释)
define logger by this.getClass()

// Template text(模板主体)
private final Logger logger = LoggerFactory.getLogger(this.getClass());

logstart

// Description(注释)
define logger

// Template text(模板主体)
log.info("$METHOD_NAME$ → $PARAMS_FORMAT$", $PARAMS$);

设置 Edit variables

Name Expression Default value Skip if defined
METHOD_NAME methodName()
PARAMS_FORMAT groovyScript("_1.collect{it+’={}’}.join(’,’)", methodParameters())
PARAMS groovyScript("_1.collect{it}.join(’,’)", methodParameters())

mian

// Description(注释)
main method

// Template text(模板主体)
public static void main(String[] args) {
     
    System.out.println($START$);
}

psa

// Description(注释)
带注释的String类属性

// Template text(模板主体)
/**
 * $VAR1$
 */
private String $VAR2$;
$END$

psas

// Description(注释)
带注释和Swagger注解的String类属性

// Template text(模板主体)
/**
 * $VAR1$
 */
@ApiModelProperty(value = "$VAR1$")
private String $VAR2$;
$END$

可按此方式设置IntegerLongDoubleBigDecimal 等其它属性模板

sop

// Description(注释)
System.out::println

// Template text(模板主体)
System.out::println

soutm

// Description(注释)
System.out.println("class_name.method_name");

// Template text(模板主体)
System.out.println("$CLASS_NAME$.$METHOD_NAME$");

设置 Edit variables

Name Expression Default value Skip if defined
CLASS_NAME className()
METHOD_NAME methodName()

syse

// Description(注释)
Prints a string to System.err

// Template text(模板主体)
System.err.println($START$);

test

// Description(注释)
add unit test method

// Template text(模板主体)
@Test
public void test() {
     
	$END$
}

todo

可修改自带模板
Settings → Live Templates → AndroidComments → TODOIDEA Live Lemplates_第4张图片

// Description(注释)
adds // TODO-MICHAEL

// Template text(模板主体)
// TODO-MICHAEL: $date$ $todo$

设置 Edit variables

Name Expression Default value Skip if defined
date date()
todo

sw/swi

// Description(注释)
create switch/case block

// Template text(模板主体)
switch($END$){
     
    case OBJECT:
        break;
    default:
        break;
}

isempty

// Description(注释)
CollectionUtils isEmpty()

// Template text(模板主体)
if (CollectionUtils.isEmpty($EXPR$)) {
     
    $END$
}

isnotempty

// Description(注释)
CollectionUtils isNotEmpty()

// Template text(模板主体)
if (CollectionUtils.isNotEmpty($EXPR$)) {
     
    $END$
}

nlist

// Description(注释)
declare the (ArrayList) variable

// Template text(模板主体)
List<$VAR1$> $VAR2$List = new ArrayList<>();$END$

nmap

// Description(注释)
declare the (HashMap) variable

// Template text(模板主体)
Map<$VAR1$, $VAR2$> $VAR3$Map = new HashMap<>();$END$

nmapl

// Description(注释)
declare the (LinkedHashMap) variable

// Template text(模板主体)
Map<$VAR1$, $VAR2$> $VAR3$Map = new LinkedHashMap<>();$END$

notnull

// Description(注释)
Check list is not null

// Template text(模板主体)
if(null != $EXPR$ && $EXPR$.size() > 0){
     
    $END$
}

nset

// Description(注释)
declare the (HashSet) variable

// Template text(模板主体)
Set<$VAR1$> $VAR2$Set = new HashSet<>();$END$

nsetl

// Description(注释)
declare the (LinkedHashSet) variable

// Template text(模板主体)
Set<$VAR1$> $VAR2$Set = new LinkedHashSet<>();$END$

2. 环绕实时代码模板

快捷键 描述
Ctrl+J 插入普通的live template
CTRL+ALT+J 插入普通的live template(即:弹出所有模板,输入对应快捷内容,Tab进行选中;环绕选中,会弹出含有$SELECTION$的模板)
CTRL+ALT+T 弹出所有环绕模板,包括if、while、try等模板

slogd

// Description(注释)
log with selection → log.debug("info:{}", "")

// Template text(模板主体)
log.debug("info:{}", $SELECTION$);

sloge

// Description(注释)
log with selection → log.error("info:{}", "")

// Template text(模板主体)
log.error("info:{}", $SELECTION$);

slogi

// Description(注释)
log with selection → log.info("info:{}", "")

// Template text(模板主体)
log.info("info:{}", $SELECTION$);

你可能感兴趣的:(IDEA)