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

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

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

  首先,我们要知道Live Template是在哪里定义的,先按Ctrl + Shift + S进入设置,接着在输入框输入“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
  1. 修改作用范围

K


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

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

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

$END$
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 160,585评论 4 365
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,923评论 1 301
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 110,314评论 0 248
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,346评论 0 214
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,718评论 3 291
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,828评论 1 223
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 32,020评论 2 315
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,758评论 0 204
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,486评论 1 246
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,722评论 2 251
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,196评论 1 262
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,546评论 3 258
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,211评论 3 240
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,132评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,916评论 0 200
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,904评论 2 283
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,758评论 2 274

推荐阅读更多精彩内容

  • Lua 5.1 参考手册 by Roberto Ierusalimschy, Luiz Henrique de F...
    苏黎九歌阅读 13,519评论 0 38
  • Intellij IDEA中有很多快捷键让人爱不释手,stackoverflow上也有一些有趣的讨论。每个人都有...
    流夜王阅读 1,033评论 0 1
  • Ctrl+Shift + Enter,语句完成 “!”,否定完成,输入表达式时按 “!”键 Ctrl+E,最近的文...
    Alex_1799阅读 464评论 0 0
  • 返回上次光标的位置Ctrl+Alt+ left/right 返回至上次浏览的位置 Alt+回车 导入包,自动修正C...
    请叫我四爷阅读 1,817评论 1 2
  • 突然发现都12点多了,他又回复消息,唉,再晚点我就睡了,于是又开始期待回复,真是没出息,明明就是不用回复的消息还在...
    wuli树洞阅读 92评论 0 0