一、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

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 → TODO

// 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 Live Lemplates相关推荐

最新文章

  1. 用神经网络做分子模型:乙烯和乙炔的实验数据
  2. SQL Server 查找统计信息的采样时间与采样比例
  3. 光模块的正确安装方法和使用须知
  4. usb一转多 树莓派zero_树莓派 Zero USB/以太网方式连接配置教程
  5. php从注册列表卸载,MSSQL_彻底删除SQL Server注册表的方法,一般在卸载完数据库时,大家 - phpStudy...
  6. 英特尔显示器音频_骁龙865、全球最快32寸显示器、高达联名路由……这场发布会为电竞玩家带来多少高科技?...
  7. caffe模型文件解析_「机器学习」截取caffe模型中的某层
  8. php 实现两变量值对换,PHP互换两个变量值的方法(不用第三变量)
  9. 惊天后续 | 不仅可看照片和短信, 利用 iOS 漏洞无需密码还能打电话、发短信!...
  10. 软件开发中的成本意识
  11. Flume系列一之架构介绍和安装
  12. java的PrintWriter打印流详解
  13. 你真的分得清系统误差、随机误差和偶然误差吗?(含例题)
  14. linux查看cuda驱动程序,我的nvidia驱动程序的正确CUDA版本是什么?
  15. canvas学习绘制渐变色
  16. 防关联浏览器有哪些浏览器(浏览器防关联软件分析)
  17. jmeter 运行接口报javax.net.ssl.SSLException: Unrecognized SSL message, plaintext connection的解决方法
  18. Android案例手册 - 实现一个华容道拼图游戏
  19. chai.js------使用
  20. 2022年第二届中国高校大数据挑战赛A题探究

热门文章

  1. k8s kubectl 日常命令使用记录
  2. java可视化日历_Java实现可视化日历程序
  3. 5.4 同一对象应用多种描边效果 [Illustrator CC教程]
  4. 【Windows】'xxx' 不是内部或外部命令,也不是可运行的程序或批处理文件
  5. 告别excel,用phpIPAM来管理家庭网络
  6. [ZZ]09年第一季度中国互联网经济及核心行业数据发布
  7. Php验签错误支付宝,支付宝支付验签失败解决办法
  8. 修改van-fileld的lable样式
  9. signature=9f46406ae6d5b233c98d06c509970186,The phase diagram of ammonium nitrate
  10. 获取验证码按钮点击后,一分钟内不可继续点击