idea live templates

IDEA live template

目的

创建代码模板进行快速代码编写,如sout–>System.out.println();

设置

1、定义模板

Abbreviation:模板的缩略名称,如sout;

Template text:模板的代码片段,可以用自定义变量。

2、自定义变量:

这里我们自定义了CLASS变量(使用时需要前后都加上$),但Idea并不识别,这就需要对自定义的变量进行编辑,Edit Variables。

Name:我们的自定义变量名称;

Expression:变量替换表达式,这里我们使用了Idea模板支持的内置函数className()表示类名,更多的内置函数参考:Creating and Editing Template Variables

Default value:表达式计算失败时的默认值。

3、设置应用范围

内置模板

  1. sbc

说明: sbc + 回车

  1. 快速生成main方法

main + 回车
psvm + 回车

  1. 快速生成System.out.println

sout + 回车

  1. 快速生成TODO注释

todo + 回车

  1. 快速生成public static final

psf + 回车

  1. 快速生成public static final String

psfs + 回车

同理:

psfi: public static final int
prsf: private static fianl

  1. 快速生成获取单例方法

geti + 回车

  1. 快速生成私有静态final字符串

key + 回车 => 可以快速生成以KEY_为前缀的私有静态final字符串

1
2
3

private static final String KEY_光标所在位置= "";

  1. 快速生成私有final整型变量

const + 回车 =>

1
2
3

private static final int 光标所在位置 = 958;

  1. ctrl + j , 调出代码模板生成菜单.

其他:

sb.main
sb.post
sb.get

生成固定代码片段

  1. 选中要生成的代码片段

  2. 在菜单中选择Tools | Save as Live Template

  3. 填写触发单词(Abbreviation)

  4. 在代码中输入触发单词后按 Tab,可以重复生成代码片段。

常用模板

loggerDefineStatic

1
private static final Logger logger = LoggerFactory.getLogger($CLASS_NAME$.class);

CLASS_NAME className()

loggerDefineThis

1
private final Logger logger = LoggerFactory.getLogger(this.getClass());

logStart

1
logger.info("op=start_$METHOD_NAME$, $PARAMS_FORMAT$", $PARAMS$);

自定义变量:

变量名 取值
METHOD_NAME methodName()
PARAMS_FORMAT groovyScript(“_1.collect{it+’={}’}.join(‘,’)”, methodParameters())
PARAMS groovyScript(“_1.collect{it}.join(‘,’)”, methodParameters())

test

1
2
3
4
@Test
public void test() {
$END$
}

Live-Templates

分享个人 IntelliJ idea Live Template 配置,希望可以帮助大家提高编程效率,如果你那也有一些好用的template欢迎添加.

对于Live Template 还熟悉的童鞋可以先查看本文.

实体类相关

Abbreviation : pi

Description : private Integer

Template text:

1
2
3
4
5
/**
* $var1$
*/
private Integer $end$;


Abbreviation : pl

Description : private list

Template text:

1
2
3
4
5
/**
* $var1$
*/
private List<$var2$> $end$;


Abbreviation : pm

Description : private map

Template text:

1
2
3
4
5
/**
* $var1$
*/
private Map<$var2$, $var3$> $end$;


Abbreviation : ps

Description : private String

Template text:

1
2
3
4
5
/**
* $var1$
*/
private String $end$;


Abbreviation : pss

Description : private Set

Template text:

1
2
3
4
5
/**
* $var1$
*/
private Set<$var2$> $end$;


通用

Abbreviation : list

Description : list

作用域 : Java.Statement(其他的不用选)

Template text:

1
2
List<$var1$> list = new ArrayList<>();


Abbreviation : map

Description : map

作用域 : Java.Statement(其他的不用选)

Template text:

1
2
Map<$var1$, $var2$> map = new HashMap<>();


Abbreviation : set

Description : set

作用域 : Java.Statement(其他的不用选)

Template text:

1
2
Set<$var1$> set = new HashSet<>();

log相关

Abbreviation : param

Description : log info method params

Variables :

  • end = methodName()
  • params = groovyScript(“‘"‘ + _1.collect { it + ‘ = [" + ‘ + it + ‘ + "]’}.join(‘, ‘) + ‘"‘“, methodParameters())

Template text:

1
2
log.info("$end$ :" + $params$);


Spring bean注入

Abbreviation : apr

Description : spring bean inject

Variables :

Template text:

1
2
3
@Autowired
private $var1$ $var2$;


Controller Rest Post
Abbreviation : cpost

Description : Controller层Post请求模板代码

Variables :

Template text:

1
2
3
4
5
@PostMapping("$var1$")
public Result<$var2$> get$var3$() {
return Result.buildSuccess($var4$);
}


lombok
Abbreviation : lmk

Description : lombok模板代码

Variables :

Template text:

1
2
3
4
5
@Data
@AllArgsConstructor
@NoArgsConstructor
@Accessors(chain = true)

CollectionUtils.isEmpty
Abbreviation : cie

Description : 判断集合是否为空模板

Variables :

Template text:

1
2
3
4
if (CollectionUtils.isEmpty($var1$)) {
$var2$
}

StringUtils.isNotBlank
Abbreviation : sinotb

Description : 判断字符串是否不为空

Variables :

Template text:

1
2
3
4
if (StringUtils.isNotBlank($var1$)) {
$var2$
}

StringUtils.isBlank
Abbreviation : sinotb

Description : 判断字符串是否为空

Variables :

Template text:

1
2
3
4
if (StringUtils.isBlank($var1$)) {
$var2$
}

javax bean inject
Abbreviation : rpr

Description : @Resource方式注入

Variables :

Template text:

1
2
3
@Resource
private $var1$ $var2$;

作用范围: Applicable in Java

stream

filter

1
filter

filter

1
2
3
4
5
6
7
8
<template name="filter" value="$ITERABLE_TYPE$.stream()&#10;    .filter($VAR$ -&gt; $VAR_CONDITION$)&#10;    .collect(Collectors.toList());" description="Iterate Iterable | Array in J2SDK 5.0 syntax" toReformat="true" toShortenFQNames="true">
<variable name="ITERABLE_TYPE" expression="iterableVariable()" defaultValue="" alwaysStopAt="true" />
<variable name="VAR" expression="suggestVariableName()" defaultValue="" alwaysStopAt="true" />
<variable name="VAR_CONDITION" expression="suggestVariableName()" defaultValue="" alwaysStopAt="true" />
<context>
<option name="JAVA_CODE" value="true" />
</context>
</template>

foreach

1
fore

foreach

1
2
3
4
5
6
7
8
<template name="fore" value="$ITERABLE_TYPE$.forEach($VAR$ -&gt; {&#10;  $EACH_VAR$&#10;});" description="Iterate Iterable | Array in J2SDK 5.0 syntax" toReformat="true" toShortenFQNames="true">
<variable name="ITERABLE_TYPE" expression="iterableVariable()" defaultValue="" alwaysStopAt="true" />
<variable name="VAR" expression="suggestVariableName()" defaultValue="" alwaysStopAt="true" />
<variable name="EACH_VAR" expression="suggestVariableName()" defaultValue="" alwaysStopAt="true" />
<context>
<option name="JAVA_CODE" value="true" />
</context>
</template>

map

1
map

map

1
2
3
4
5
6
7
8
<template name="map" value="$ITERABLE_TYPE$.stream()&#10;    .map($VAR$ -&gt; $MAP_VAR$)&#10;    .collect(Collectors.toList());" description="Iterate Iterable | Array in J2SDK 5.0 syntax" toReformat="true" toShortenFQNames="true">
<variable name="VAR" expression="suggestVariableName()" defaultValue="" alwaysStopAt="true" />
<variable name="ITERABLE_TYPE" expression="iterableVariable()" defaultValue="" alwaysStopAt="true" />
<variable name="MAP_VAR" expression="suggestFirstVariableName()" defaultValue="" alwaysStopAt="true" />
<context>
<option name="JAVA_CODE" value="true" />
</context>
</template>

Where and how to conf

Copy the xml template above, go to the intellij live template editor, paste to whatever group you want to it to sit.

image

未完待续… …

巨人肩膀


idea live templates
http://dantefung.github.io/2022/04/12/idea-live-templates/
Beitragsautor
DANTE FUNG
Veröffentlicht am
April 12, 2022
Urheberrechtshinweis