IDEA Live Lemplates

一、IDEA Setteing界面

Setting → Editor → Live Lemplates在这里插入图片描述

二、编辑 Llive Lemplate

点击+按钮,点击Template Group添加一个分组;选中分组,再通过加号添加Live Template
在这里插入图片描述

设置模板

在这里插入图片描述

  • 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

NameExpressionDefault valueSkip if defined
CLASS_NAMEclassName()

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

NameExpressionDefault valueSkip if defined
METHOD_NAMEmethodName()
PARAMS_FORMATgroovyScript(“_1.collect{it+‘={}’}.join(‘,’)”, methodParameters())
PARAMSgroovyScript(“_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

NameExpressionDefault valueSkip if defined
CLASS_NAMEclassName()
METHOD_NAMEmethodName()

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 → TODO在这里插入图片描述

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

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

设置 Edit variables

NameExpressionDefault valueSkip if defined
datedate()
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$);
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值