IDEA Live Lemplates
2024-07-04 07:17:55
一、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$
可按此方式设置Integer
、Long
、Double
、BigDecimal
等其它属性模板
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相关推荐
最新文章
- 用神经网络做分子模型:乙烯和乙炔的实验数据
- SQL Server 查找统计信息的采样时间与采样比例
- 光模块的正确安装方法和使用须知
- usb一转多 树莓派zero_树莓派 Zero USB/以太网方式连接配置教程
- php从注册列表卸载,MSSQL_彻底删除SQL Server注册表的方法,一般在卸载完数据库时,大家 - phpStudy...
- 英特尔显示器音频_骁龙865、全球最快32寸显示器、高达联名路由……这场发布会为电竞玩家带来多少高科技?...
- caffe模型文件解析_「机器学习」截取caffe模型中的某层
- php 实现两变量值对换,PHP互换两个变量值的方法(不用第三变量)
- 惊天后续 | 不仅可看照片和短信, 利用 iOS 漏洞无需密码还能打电话、发短信!...
- 软件开发中的成本意识
- Flume系列一之架构介绍和安装
- java的PrintWriter打印流详解
- 你真的分得清系统误差、随机误差和偶然误差吗?(含例题)
- linux查看cuda驱动程序,我的nvidia驱动程序的正确CUDA版本是什么?
- canvas学习绘制渐变色
- 防关联浏览器有哪些浏览器(浏览器防关联软件分析)
- jmeter 运行接口报javax.net.ssl.SSLException: Unrecognized SSL message, plaintext connection的解决方法
- Android案例手册 - 实现一个华容道拼图游戏
- chai.js------使用
- 2022年第二届中国高校大数据挑战赛A题探究
热门文章
- k8s kubectl 日常命令使用记录
- java可视化日历_Java实现可视化日历程序
- 5.4 同一对象应用多种描边效果 [Illustrator CC教程]
- 【Windows】'xxx' 不是内部或外部命令,也不是可运行的程序或批处理文件
- 告别excel,用phpIPAM来管理家庭网络
- [ZZ]09年第一季度中国互联网经济及核心行业数据发布
- Php验签错误支付宝,支付宝支付验签失败解决办法
- 修改van-fileld的lable样式
- signature=9f46406ae6d5b233c98d06c509970186,The phase diagram of ammonium nitrate
- 获取验证码按钮点击后,一分钟内不可继续点击