IDEA快捷键拆解系列(十八):Live Templates篇

  这是IDEA快捷键拆解系列的第十八篇。

  本文将介绍一下IDEA强大的Live Template功能。

  首先,我们要知道Live Template是在哪里定义的,先按Ctrl + Shift + S进入设置,接着在输入框输入“Live Template”就可以定位到了,如下图所示。

Live Template

  从上图可以看到,IDEA官方已经帮我们定义好了一些常用的Live Template,而且针对不同的文件类型也划分了不同的Live Template Group。查看Live Template的快捷键是Ctrl + J,这里列几个比较常用的。

  • iterate (迭代)
    • itar:Iterate elements of array,操作顺序迭代数组

    //1.定义一个数组 String[] strings = new String[]; //2.输入itar后会有提示,按`Enter`确认后会自动输出以下内容,默认是按`Tab`键快速进行光标切换 for (int i = 0; i < strings.length; i++) { String string = strings[i]; }

    • ritar:Iterate elements of array in reverse order,反转迭代数组

    String[] strings = new String[]; //输入ritar后会有提示,按`Enter`确认后会自动输出以下内容,默认是按`Tab`键进行光标快速切换 for (int i = strings.length - 1; i >= 0; i--) { String string = strings[i]; }

    • iter:Iterate (for each..in),ForEach迭代

    List<String> stringList = new ArrayList<>(); //输入iter后会有提示,按`Enter`确认后会自动输出以下内容,默认是按`Tab`键进行光标快速切换 for (String s : stringList) { }

    • fori:Create iteration loop,含下标的普通迭代

    //输入fori后会有提示,按`Enter`确认后会自动输出以下内容,默认是按`Tab`键进行光标快速切换 for (int i = 0; i < ; i++) { }

    • itli:Iterate elements of java.util.List,List迭代

    List<String> stringList = new ArrayList<>(); //输入itli后会有提示,按`Enter`确认后会自动输出以下内容,默认是按`Tab`键进行光标快速切换 for (int i = 0; i < stringList.size(); i++) { String s = stringList.get(i); }

    • itco:Iterate elements of java.util.Collection,iterator迭代

    List<String> stringList = new ArrayList<>(); //输入itco后会有提示,按`Enter`确认后会自动输出以下内容,默认是按`Tab`键进行光标快速切换 for (Iterator<String> iterator = stringList.iterator(); iterator.hasNext(); ) { String next = iterator.next(); }

    • iten:Iterate java.util.Enumeration
    • itit:Iterate java.util.Iterator
    • ittok:Iterate tokens from String
    • itve:Iterate elements of java.util.Vector
  • define (定义)
    • St String
    • thr throw new
    • psf public static final
    • prsf private static final
    • psfi public static final int
    • psfs public static final String
    • psfs public static final String
    • geti:Inserts singleton method getInstance public static $CLASS_NAME$ getInstance() { return ; }
    • ifn:Inserts if null statement if ($VAR$ == null) { }
    • inn:Inserts if not null statement if ($VAR$ != null) { }
    • inst:Checks object type with instanceof and down-casts it if ($EXPR$ instanceof $TYPE$) { $TYPE$ $VAR1$ = ($TYPE$)$EXPR$; $END$ }
    • lazy:Performs lazy initialization if ($VAR$ == null) { $VAR$ = new $TYPE$(); }
    • lst:Fetches last element of an array
    • mn:Sets lesser value to a variable
    • mx:Sets greater value to a variable
    • toar:Stores elements of java.util.Collection into array
  • main
    • psvm public static void main(String[] args) {}
  • print (打印)
    • sout:Prints a string to System.out System.out.println();
    • souf:Prints a formatted string to System.out System.out.printf("");
    • serr:Prints a string to System.err System.err.println("");
    • soutm:Prints current class and method names to System.out System.out.println("className.methodName");
    • soutv:Prints a value to System.out System.out.println("variable name = " + variable value);
    • soutp:Prints method parameter names and values to System.out System.out.println("parameter name = [" + parameter value + "]");
  • Maven
    • dep:dependency <dependency> <groupId></groupId> <artifactId></artifactId> <version></version> </dependency>
    • pl:plugin <plugin> <groupId></groupId> <artifactId></artifactId> <version></version> </plugin>
    • repo:repository <repository> <id></id> <name></name> <url></url> </repository>
  • SQL
    • col:new column definition $col$ $type$ $null$$END$
    • ins:insert rows into a table insert into $table$ ($columns$) values ($END$);
    • sel:select all rows from a table select * from $table$$END$;
    • selc:select the number of specific rows in a table select count(*) from $table$ $alias$ where $alias$.$END$;
    • selw:select specific rows from a table select * from $table$ $alias$ where $alias$.$END$;
    • tab:new table definition create table $table$ ( $col$ $type$ $null$$END$ );
    • upd:update values in a table update $table_name$ set $col$ = $value$ where $END$;

  当然了,Live Templat强大的地方不仅在于官方定义好的这部分,更重要是还支持自定义的Live Template。在学习工作中,我们可以尝试把一些重复的代码抽出来变成模板,接下来我们就来看看如何自定义Live Template。

  1. 配置自定义Live Template

配置自定义Live Template

  1. 修改作用范围

修改作用范围

修改作用范围

  1. 新建POJO,输入自定义的Live Template快捷键,如这里是cps,按Enter键选择后光标将停留在VAR1的位置,默认按Tab键即可快速切换到VAR2的位置。

测试Live Template

测试Live Template

由于个人疏忽,所以截图部分Live Template存在部分错误,下面是更正后的Live Template。

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

$END$

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏微信公众号:Java团长

Intellij IDEA神器那些让人爱不释手的小技巧

之前写了一篇介绍IntellIJ IDEA的文章,主要是列出一些平时大家可能没用过或者没怎么用,但是又非常好用的IntellIJ IDEA小技巧。由于篇幅原因,...

9120
来自专栏平凡文摘

Intellij IDEA 那些隐藏好用的小技巧

21240
来自专栏申龙斌的程序人生

零基础学编程036:快速编写一个GUI程序

在《零基础学编程035:群发邮件并不难》里,我们学会了发邮件,我用于向shenlongbin@sync.omnigroup.com发送一封邮件,就可以实现GTD...

43680
来自专栏java思维导图

Intellij IDEA神器那些让人爱不释手的14种小技巧,统统告诉你!

来源:https://blog.csdn.net/linsongbin1/article/details/80560332

10950
来自专栏逸鹏说道

Jupyter ~ 像写文章般的 Coding

这次选Markdown模式(关于Markdown基础可以看之前写的Markdown Base)

13730
来自专栏技术换美食换不换

Hello Qt! 卡诺图开发

10220
来自专栏逸鹏说道

Jupyter ~ 像写文章般的 Coding (附:同一个ipynb文件,执行多语言代码)

这次选Markdown模式(关于Markdown基础可以看之前写的Markdown Base)

2.9K60
来自专栏逍遥剑客的游戏开发

Nebula3嵌入WPF

16320
来自专栏纯洁的微笑

Intellij IDEA神器那些让人爱不释手的小技巧

10630
来自专栏程序员的SOD蜜

不使用反射,“一行代码”实现Web、WinForm窗体表单数据的填充、收集、清除,和到数据库的CRUD

问题篇:     昨天在CSDN看到这样一个帖子:“苦逼的三层代码”: 采用传统的三层架构写代码,每个数据表都要定义一个实体对象,编写后台的时候, Web层需要...

37680

扫码关注云+社区

领取腾讯云代金券