正在加载今日诗词....

IDEA Live Template模板使用及其配置心得

Setting -> Editor -> Live Templates中可以自定义活动模板。

活动模板的自定义支持多任务光标,一个变量即是一个任务光标,可用$END$标记结束光标。

在底部可以修改适用范围,勾选Java -> statement就可以适用于Ctrl+J或空白输入。

执行后效果如下:

环绕模板

环绕模板依托于某个代码块,使用快捷键Ctrl+Alt+J触发。

定义时使用$SELECTION$标记被环绕的代码块。

使用时若光标无选中代码块,则以当前行为环绕对象,否则以选中代码块为环绕对象。

演示:

模板变量表达式含义表

以下是定义变量时支持的表达式基本含义(当匹配多个结果时结果将出现在待选列表中):

表达式 含义
annotated(<annotation>) 返回具有指定注解的类,方法或字段名
arrayVariable() 返回当前范围内数组变量,最近的优先展示
lineCommentStart() 返回当前语言指示行注释开始的字符
blockCommentStart() 返回当前语言指示块注释开始的字符
blockCommentEnd() 返回当前语言指示块注释结束的字符
commentStart() 返回当前语言指示注释开始的字符,对有行注释的返回行注释开头
commentEnd() 返回当前语言指示注释结束的字符,对有行注释的返回空(行注释通常没有结束字符)
camelCase(<String>) 将字符串转换为驼峰形式
snakeCase(<String>) 将字符串转换为下划线分割形式
spaceSeparated(<String>) 将字符串转换为空格分开形式
spacesToUnderscores(<String>) 将字符串的空格替换为下划线
capitalize(<String>) 将字符串首字母设为大写
capitalizeAndUnderscore(<String>) 将字符串转换为大写并用下划线隔开
decapitalize(<String>) 将字符串首字母设为小写
underscoresToCamelCase(<String>) 将下划线形式字符串转换为驼峰形式
underscoresToSpaces(<String>) 将下划线形式字符串转换为空格隔开形式
lowercaseAndDash(<String>) 将字符串转为小写并使用中划线分割
escapeString(<String>) 将字符串中的特殊符号进行转义,便于在java字符串中使用
substringBefore(<String>, <Delimeter>) 截取字符串在<Delimeter>之前的部分
firstWord(<String>) 返回字符串中的首个单词
castToLeftSideType() 获取左侧变量的类型判断是否需要强转
rightSideType() 获取右侧表达式的变量类型
className() 返回当前所在类(在内部类则返回内部类)类名
currentPackage() 返回当前所在包名
qualifiedClassName() 返回当前所在类(在内部类则返回内部类)的全限定类名(包+类名)
classNameComplete() 触发类名相关的代码补全
clipboard() 返回系统剪贴板的内容
complete() 调用一次代码补全,相当于调用一次Ctrl+Space
completeSmart() 调用一次智能代码补全,相当于调用一次Ctrl+Alt+Space
componentTypeOf(<array>) 返回数组类型
concat(<String>, …) 拼接字符串
date([format]) 指定格式化方式返回当前系统时间字符串(根据SimpleDateFormat格式)
time([format]) 指定格式化方式返回当前系统时间字符串(无日期,根据SimpleDateFormat格式)
descendantClassesEnum(<String>) 返回指定类的子类
lineNumber() 返回当前行行号
enum(<String>, …) 返回建议的字符串列表
expectedType() 自动识别并返回期望的类型,一般用于赋值,方法参数,返回语句处。
fileName() 返回当前文件名(带拓展名)
fileNameWithoutExtension() 返回当前文件名(不带拓展名)
filePath() 返回当前文件路径(带拓展名)
fileRelativePath() 返回当前文件相对当前项目的路径(带拓展名)
groovyScript(<String>, [arg, …]) 执行作为字符串形式传递的groovy脚本
guessElementType(<Collection>) 返回集合中元素的类型
iterableComponentType(<Iterable>) 返回可迭代对象的类型
iterableVariable() 返回当前范围内可迭代类型对象,最近的优先展示
methodName() 返回当前所在方法名
methodParameters() 返回当前所在方法的所有参数名
methodReturnType() 返回当前所在方法的返回类型
regularExpression(<String>, <Pattern>, <Replacement>) 查找字符串中满足<Pattern>的所有部分并替换为<Replacement>
typeOfVariable(<String>) 返回变量的类型
variableOfType(<String>) 返回当前范围内满足类型条件的变量,最近的优先展示
suggestFirstVariableName(<String>) 返回当前范围内满足类型条件的部分变量,最近的优先展示和variableOfType类似但不推荐true,false,this,和super
subtypes(<String>) 返回指定类型的子类型
suggestIndexName() 返回当前范围中未使用的第一个常用迭代下标变量名(i,j,k等)
suggestVariableName() 根据变量命名规则的代码风格设置返回建议的变量名
suggestShortVariableName() 建议的变量名精简版
user() 返回当前系统的用户名称

变量表达式定义和演示

annotated(<annotation>)

定义时在括号内传入注解的全限定类名:

演示:

arrayVariable

返回类字段,或方法变量中的数组类型变量名称。离得近的将被优先推荐

演示:

lineCommentStart~commentEnd

lineCommentStartblockCommentStartblockCommentEndcommentStartcommentEnd在不同的语言环境中表现是不一致的。

lineCommentStart返回当前语言中指示行注释开始的字符。

blockCommentStartblockCommentEnd则返回当前语言中指示块注释开始,结束的字符。

commentStartcommentEnd视情况而定,若当前语言有行注释则与lineComment表现一致(行注释通常没结束标记commentEnd为空),若没有行注释则与blockComment表现一致。

演示:

camelCase(<String>)~firstWord(<String>)

camelCase(<String>)

参数内容转换为驼峰形式。可以转换空格,下划线,中划线分割的字符串(之后的一些表达式也都是类似机制,因此不再单独录制演示)。

演示:

snakeCase(<String>)

将参数内容字符串转换为下划线分割形式,例如将user name,userName,user-name转换为user_name

spaceSeparated(<String>)

将字符串转换为空格分开形式(不会改变原来的大小写状态),例如将userNameuser Nameuser-Name转换为user Name

spacesToUnderscores(<String>)

将字符串的空格替换为下划线,例如将user name转换为user_name,将user name(两个空格)替换为user__name

capitalize(<String>)

将字符串首字母设为大写,例如将username转换为Username

capitalizeAndUnderscore(<String>)

将字符串转换为大写并用下划线隔开 ,例如将UserNameuser nameuser-name转换为USER_NAME

decapitalize(<String>)

将字符串首字母设为小写,例如将Username转换为username

underscoresToCamelCase(<String>)

将字符串下划线形式转换为驼峰形式,例如将user_name转换为userName,将user_NAME转换为userName,将USERNAME转换为username。

underscoresToSpaces(<String>)

将字符串下划线替换为空格,例如将user_name转换为user name。

lowercaseAndDash(<String>)

将字符串转换为小写并用中划线隔开 ,例如将UserNameuser nameuser_name转换为user-name

escapeString(<String>)

对字符串中的特殊字符进行转义,以便在java字符串中进行使用。例如将”转换为\“。

substringBefore(<String>, <Delimeter>)

截取字符串在<Delimeter>之前的部分 ,例如substringBefore(“fileName.zip”,”.”)返回fileName。

firstWord(<String>)

返回字符串中的第一个单词。例如user name返回user

castToLeftSideType与rightSideType

由于castToLeftSideType需要比对左右侧变量类型,左侧类型可以等待任务光标完成编辑,右侧却不行,因此任务光标到达castToLeftSideType变量处时,右侧变量需要是已知类型。

演示:

rightSideType可以获取右侧类型作为默认值,因此任务光标到达时右侧变量也需要是已知类型。需要注意的是rightSideType似乎必须定义一个默认值,否则将获取不到任何提示

演示:

className~qualifiedClassName

className返回当前类名,可用作构造函数预定义构造函数,日志对象之类的模板。

currentPackage返回当前包名。

qualifiedClassName则是二者的拼接。

演示:

clipboard

返回剪贴板内容。

演示:

componentTypeOf(<array>)

返回参数的数组类型 。

演示:

concat(<String>, …)

拼接参数中的所有字符串。

演示:

date([format])

指定格式化方式返回当前系统时间字符串,格式化字符串遵循SimpleDateFormat格式。

演示:

descendantClassesEnum(<String>)

返回指定类的子类。

演示:

enum(<String>, …)

自行指定返回的字符串列表。

演示:

expectedType

自动识别并返回期望的类型,可以用于赋值,方法参数,返回语句处。

演示:

fileName~fileRelativePath

fileName返回当前文件名(带拓展名)。

fileNameWithoutExtension返回当前文件名(不带拓展名)。

filePath返回文件全路径(带拓展名)。

fileRelativePath返回文件相对当前项目的路径(带拓展名)。

演示:

groovyScript(<String>, [arg, …])

执行作为字符串形式传递的groovy脚本,第一个参数为脚本内容或脚本文件路径 ,之后的参数都为可选参数。

如果要在脚本中调用可选参数可以使用_1,_2,_3以此类推,要访问当前编辑器可以使用_editor变量。

此段脚本为两个变量做一个简单的拼接:

1
groovyScript("return \"${_1}\" + \"${_2}\"",var1,var2)

演示:

guessElementType(<Collection>)

返回集合中的泛型类型。

演示:

iterableComponentType(<Iterable>)

返回可迭代对象中的泛型类型,使用于数组,对象及其他任意实现Iterable接口的对象。

演示:

classNameComplete

触发一次类名相关的补全提示。

演示:

methodParameters

获取所有的参数名,返回时在外面拼接[]。

演示:

regularExpression(<String>, <Pattern>, <Replacement>)

查找字符串中满足<Pattern>的所有部分并替换为<Replacement> ,支持所有标准正则表达式。

演示:

typeOfVariable(<String>)

返回变量的类型。

演示:

variableOfType(<String>)~ subtypes(<String>)

variableOfType返回所有满足类型条件的变量,如果传入””则会返回所有的可用变量,距离较近的变量优先展示。

suggestFirstVariableNamevariableOfType类似,但不会推荐true,false,this,和super。

subtypes返回指定类型的子类型。

演示:

</div>

欢迎关注我的其它发布渠道

<div class="social-list">

    <div class="social-item">
      <a target="_blank" class="social-link" href="/images/WechatIMG.jpg">
        <span class="icon">
          <i class="fab fa-weixin"></i>
        </span>

        <span class="label">WeChat</span>
      </a>
    </div>

    <div class="social-item">
      <a target="_blank" class="social-link" href="/atom.xml">
        <span class="icon">
          <i class="fa fa-rss"></i>
        </span>

        <span class="label">RSS</span>
      </a>
    </div>
</div>
  <footer class="post-footer">
      
      <div class="post-tags">
          <a href="/tags/idea/" rel="tag"><i class="fa fa-tag"></i> idea</a>
      </div>

    


    
<div class="post-nav">
  <div class="post-nav-item">
<a href="/2020/05/30/Idea%20Tips/" rel="prev" title="敏捷开发,代码重构。Idea不得不提的三大技巧">
  <i class="fa fa-chevron-left"></i> 敏捷开发,代码重构。Idea不得不提的三大技巧
</a></div>
  <div class="post-nav-item">
<a href="/2020/06/09/Idea%20Mouse%20Tip/" rel="next" title="Idea减少鼠标操作的几个技巧">
  Idea减少鼠标操作的几个技巧 <i class="fa fa-chevron-right"></i>
</a></div>
</div>
  </footer>
      </div>
      
<div class="comments v" id="valine-comments" data-class="v" style="opacity: 1; display: block;"><div class="vpanel"><div class="vwrap"><p class="cancel-reply text-right" style="display:none;" title="取消回复"><svg class="vicon cancel-reply-btn" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="4220" width="22" height="22"><path d="M796.454 985H227.545c-50.183 0-97.481-19.662-133.183-55.363-35.7-35.701-55.362-83-55.362-133.183V227.545c0-50.183 19.662-97.481 55.363-133.183 35.701-35.7 83-55.362 133.182-55.362h568.909c50.183 0 97.481 19.662 133.183 55.363 35.701 35.702 55.363 83 55.363 133.183v568.909c0 50.183-19.662 97.481-55.363 133.183S846.637 985 796.454 985zM227.545 91C152.254 91 91 152.254 91 227.545v568.909C91 871.746 152.254 933 227.545 933h568.909C871.746 933 933 871.746 933 796.454V227.545C933 152.254 871.746 91 796.454 91H227.545z" p-id="4221"></path><path d="M568.569 512l170.267-170.267c15.556-15.556 15.556-41.012 0-56.569s-41.012-15.556-56.569 0L512 455.431 341.733 285.165c-15.556-15.556-41.012-15.556-56.569 0s-15.556 41.012 0 56.569L455.431 512 285.165 682.267c-15.556 15.556-15.556 41.012 0 56.569 15.556 15.556 41.012 15.556 56.569 0L512 568.569l170.267 170.267c15.556 15.556 41.012 15.556 56.569 0 15.556-15.556 15.556-41.012 0-56.569L568.569 512z" p-id="4222"></path></svg></p><div class="vheader item3"><input name="nick" placeholder="昵称" class="vnick vinput" type="text"><input name="mail" placeholder="邮箱" class="vmail vinput" type="email"><input name="link" placeholder="网址(http://)" class="vlink vinput" type="text"></div><div class="vedit"><textarea id="veditor" class="veditor vinput" placeholder=">-<"></textarea><div class="vrow"><div class="vcol vcol-60 status-bar"></div><div class="vcol vcol-40 vctrl text-right"><span title="表情" class="vicon vemoji-btn"><svg viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="16172" width="22" height="22"><path d="M512 1024a512 512 0 1 1 512-512 512 512 0 0 1-512 512zM512 56.888889a455.111111 455.111111 0 1 0 455.111111 455.111111 455.111111 455.111111 0 0 0-455.111111-455.111111zM312.888889 512A85.333333 85.333333 0 1 1 398.222222 426.666667 85.333333 85.333333 0 0 1 312.888889 512z" p-id="16173"></path><path d="M512 768A142.222222 142.222222 0 0 1 369.777778 625.777778a28.444444 28.444444 0 0 1 56.888889 0 85.333333 85.333333 0 0 0 170.666666 0 28.444444 28.444444 0 0 1 56.888889 0A142.222222 142.222222 0 0 1 512 768z" p-id="16174"></path><path d="M782.222222 391.964444l-113.777778 59.733334a29.013333 29.013333 0 0 1-38.684444-10.808889 28.444444 28.444444 0 0 1 10.24-38.684445l113.777778-56.888888a28.444444 28.444444 0 0 1 38.684444 10.24 28.444444 28.444444 0 0 1-10.24 36.408888z" p-id="16175"></path><path d="M640.568889 451.697778l113.777778 56.888889a27.875556 27.875556 0 0 0 38.684444-10.24 27.875556 27.875556 0 0 0-10.24-38.684445l-113.777778-56.888889a28.444444 28.444444 0 0 0-38.684444 10.808889 28.444444 28.444444 0 0 0 10.24 38.115556z" p-id="16176"></path></svg></span><span title="预览" class="vicon vpreview-btn"><svg viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="17688" width="22" height="22"><path d="M502.390154 935.384615a29.538462 29.538462 0 1 1 0 59.076923H141.430154C79.911385 994.461538 29.538462 946.254769 29.538462 886.153846V137.846154C29.538462 77.745231 79.950769 29.538462 141.390769 29.538462h741.218462c61.44 0 111.852308 48.206769 111.852307 108.307692v300.268308a29.538462 29.538462 0 1 1-59.076923 0V137.846154c0-26.899692-23.355077-49.230769-52.775384-49.230769H141.390769c-29.420308 0-52.775385 22.331077-52.775384 49.230769v748.307692c0 26.899692 23.355077 49.230769 52.775384 49.230769h360.999385z" p-id="17689"></path><path d="M196.923077 216.615385m29.538461 0l374.153847 0q29.538462 0 29.538461 29.538461l0 0q0 29.538462-29.538461 29.538462l-374.153847 0q-29.538462 0-29.538461-29.538462l0 0q0-29.538462 29.538461-29.538461Z" p-id="17690"></path><path d="M649.846154 846.769231a216.615385 216.615385 0 1 0 0-433.230769 216.615385 216.615385 0 0 0 0 433.230769z m0 59.076923a275.692308 275.692308 0 1 1 0-551.384616 275.692308 275.692308 0 0 1 0 551.384616z" p-id="17691"></path><path d="M807.398383 829.479768m20.886847-20.886846l0 0q20.886846-20.886846 41.773692 0l125.321079 125.321079q20.886846 20.886846 0 41.773693l0 0q-20.886846 20.886846-41.773693 0l-125.321078-125.321079q-20.886846-20.886846 0-41.773693Z" p-id="17692"></path></svg></span></div></div></div><div class="vrow"><div class="vcol vcol-30"><a alt="Markdown is supported" href="https://guides.github.com/features/mastering-markdown/" class="vicon" target="_blank"><svg class="markdown" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M14.85 3H1.15C.52 3 0 3.52 0 4.15v7.69C0 12.48.52 13 1.15 13h13.69c.64 0 1.15-.52 1.15-1.15v-7.7C16 3.52 15.48 3 14.85 3zM9 11H7V8L5.5 9.92 4 8v3H2V5h2l1.5 2L7 5h2v6zm2.99.5L9.5 8H11V5h2v3h1.5l-2.51 3.5z"></path></svg></a></div><div class="vcol vcol-70 text-right"><button type="button" title="Cmd|Ctrl+Enter" class="vsubmit vbtn">提交</button></div></div><div class="vemojis" style="display:none;"></div><div class="vinput vpreview" style="display:none;"></div></div></div><div class="vcount" style="display:none;"><span class="vnum">0</span> 评论</div><div class="vload-top text-center" style="display:none;"><i class="vspinner" style="width:30px;height:30px;"></i></div><div class="vcards"></div><div class="vload-bottom text-center" style="display:none;"><i class="vspinner" style="width:30px;height:30px;"></i></div><div class="vempty" style="display: block;">来发评论吧~</div><div class="vpage txt-center" style="display:none"><button type="button" class="vmore vbtn">加载更多...</button></div><div class="vpower txt-right">Powered By <a href="https://valine.js.org" target="_blank">Valine</a><br>v1.4.16</div></div>
    </div>
  </div>
</main>

<footer class="footer">
  <div class="footer-inner">
Hexo & NexT.Muse 强力驱动
  </div>
</footer>
<title>Idea Live Templates配置详解及演示 | Maples Blog</title>

0%

<main class="main">
  <div class="main-inner">
    <div class="content-wrap">
      

      <div class="content post posts-expand">
<span hidden="" itemprop="author" itemscope="" itemtype="http://schema.org/Person">
  <meta itemprop="image" content="/images/avatar.jpg">
  <meta itemprop="name" content="maple">
  <meta itemprop="description" content="但见泪痕湿,不知心恨谁">
</span>

<span hidden="" itemprop="publisher" itemscope="" itemtype="http://schema.org/Organization">
  <meta itemprop="name" content="Maples Blog">
</span>
  <header class="post-header" style="opacity: 1; display: block; transform: translateY(0px);">
    <h1 class="post-title" itemprop="name headline">
      Idea Live Templates配置详解及演示
    </h1>

    <div class="post-meta">
        <span class="post-meta-item">
          <span class="post-meta-item-icon">
            <i class="far fa-calendar"></i>
          </span>
          <span class="post-meta-item-text">发表于</span>
          

          <time title="创建时间:2020-06-07 00:00:00 / 修改时间:13:15:39" itemprop="dateCreated datePublished" datetime="2020-06-07T00:00:00+08:00">2020-06-07</time>
        </span>
        <span class="post-meta-item">
          <span class="post-meta-item-icon">
            <i class="far fa-folder"></i>
          </span>
          <span class="post-meta-item-text">分类于</span>
            <span itemprop="about" itemscope="" itemtype="http://schema.org/Thing">
              <a href="/categories/tool/" itemprop="url" rel="index"><span itemprop="name">tool</span></a>
            </span>
        </span>

      
        <span id="/2020/06/07/Idea%20Live%20Templates/" class="post-meta-item leancloud_visitors" data-flag-title="Idea Live Templates配置详解及演示" title="阅读次数">
          <span class="post-meta-item-icon">
            <i class="fa fa-eye"></i>
          </span>
          <span class="post-meta-item-text">阅读次数:</span>
          <span class="leancloud-visitors-count">458</span>
        </span>
        <span class="post-meta-item" title="阅读次数" id="busuanzi_container_page_pv" style="display: none;">
          <span class="post-meta-item-icon">
            <i class="fa fa-eye"></i>
          </span>
          <span class="post-meta-item-text">阅读次数:</span>
          <span id="busuanzi_value_page_pv">196</span>
        </span>

Live Templates是一个便捷的定义代码模板的方式,其中提供了种类繁多的预定义模板,便于方便开发者使用。在官方预定义模板之外Idea亦拥有足够全能的变量定义表达式让开发者定义心仪的代码模板。
    </div>
  </header>




<div class="post-body" itemprop="articleBody" style="opacity: 1; display: block; transform: translateY(0px);">

  
    <h2 id="模板定义"><a href="#模板定义" class="headerlink" title="模板定义"></a>模板定义</h2><h3 id="活动模板"><a href="#活动模板" class="headerlink" title="活动模板"></a>活动模板</h3><p>活动模板不依托于某个代码块,直接输入即可以触发,或者使用快捷键<em>Ctrl+J</em>主动触发。</p>

Setting -> Editor -> Live Templates中可以自定义活动模板。

活动模板的自定义支持多任务光标,一个变量即是一个任务光标,可用$END$标记结束光标。

在底部可以修改适用范围,勾选Java -> statement就可以适用于Ctrl+J或空白输入。

执行后效果如下:

环绕模板

环绕模板依托于某个代码块,使用快捷键Ctrl+Alt+J触发。

定义时使用$SELECTION$标记被环绕的代码块。

使用时若光标无选中代码块,则以当前行为环绕对象,否则以选中代码块为环绕对象。

演示:

模板变量表达式含义表

以下是定义变量时支持的表达式基本含义(当匹配多个结果时结果将出现在待选列表中):

表达式 含义
annotated(<annotation>) 返回具有指定注解的类,方法或字段名
arrayVariable() 返回当前范围内数组变量,最近的优先展示
lineCommentStart() 返回当前语言指示行注释开始的字符
blockCommentStart() 返回当前语言指示块注释开始的字符
blockCommentEnd() 返回当前语言指示块注释结束的字符
commentStart() 返回当前语言指示注释开始的字符,对有行注释的返回行注释开头
commentEnd() 返回当前语言指示注释结束的字符,对有行注释的返回空(行注释通常没有结束字符)
camelCase(<String>) 将字符串转换为驼峰形式
snakeCase(<String>) 将字符串转换为下划线分割形式
spaceSeparated(<String>) 将字符串转换为空格分开形式
spacesToUnderscores(<String>) 将字符串的空格替换为下划线
capitalize(<String>) 将字符串首字母设为大写
capitalizeAndUnderscore(<String>) 将字符串转换为大写并用下划线隔开
decapitalize(<String>) 将字符串首字母设为小写
underscoresToCamelCase(<String>) 将下划线形式字符串转换为驼峰形式
underscoresToSpaces(<String>) 将下划线形式字符串转换为空格隔开形式
lowercaseAndDash(<String>) 将字符串转为小写并使用中划线分割
escapeString(<String>) 将字符串中的特殊符号进行转义,便于在java字符串中使用
substringBefore(<String>, <Delimeter>) 截取字符串在<Delimeter>之前的部分
firstWord(<String>) 返回字符串中的首个单词
castToLeftSideType() 获取左侧变量的类型判断是否需要强转
rightSideType() 获取右侧表达式的变量类型
className() 返回当前所在类(在内部类则返回内部类)类名
currentPackage() 返回当前所在包名
qualifiedClassName() 返回当前所在类(在内部类则返回内部类)的全限定类名(包+类名)
classNameComplete() 触发类名相关的代码补全
clipboard() 返回系统剪贴板的内容
complete() 调用一次代码补全,相当于调用一次Ctrl+Space
completeSmart() 调用一次智能代码补全,相当于调用一次Ctrl+Alt+Space
componentTypeOf(<array>) 返回数组类型
concat(<String>, …) 拼接字符串
date([format]) 指定格式化方式返回当前系统时间字符串(根据SimpleDateFormat格式)
time([format]) 指定格式化方式返回当前系统时间字符串(无日期,根据SimpleDateFormat格式)
descendantClassesEnum(<String>) 返回指定类的子类
lineNumber() 返回当前行行号
enum(<String>, …) 返回建议的字符串列表
expectedType() 自动识别并返回期望的类型,一般用于赋值,方法参数,返回语句处。
fileName() 返回当前文件名(带拓展名)
fileNameWithoutExtension() 返回当前文件名(不带拓展名)
filePath() 返回当前文件路径(带拓展名)
fileRelativePath() 返回当前文件相对当前项目的路径(带拓展名)
groovyScript(<String>, [arg, …]) 执行作为字符串形式传递的groovy脚本
guessElementType(<Collection>) 返回集合中元素的类型
iterableComponentType(<Iterable>) 返回可迭代对象的类型
iterableVariable() 返回当前范围内可迭代类型对象,最近的优先展示
methodName() 返回当前所在方法名
methodParameters() 返回当前所在方法的所有参数名
methodReturnType() 返回当前所在方法的返回类型
regularExpression(<String>, <Pattern>, <Replacement>) 查找字符串中满足<Pattern>的所有部分并替换为<Replacement>
typeOfVariable(<String>) 返回变量的类型
variableOfType(<String>) 返回当前范围内满足类型条件的变量,最近的优先展示
suggestFirstVariableName(<String>) 返回当前范围内满足类型条件的部分变量,最近的优先展示和variableOfType类似但不推荐true,false,this,和super
subtypes(<String>) 返回指定类型的子类型
suggestIndexName() 返回当前范围中未使用的第一个常用迭代下标变量名(i,j,k等)
suggestVariableName() 根据变量命名规则的代码风格设置返回建议的变量名
suggestShortVariableName() 建议的变量名精简版
user() 返回当前系统的用户名称

变量表达式定义和演示

annotated(<annotation>)

定义时在括号内传入注解的全限定类名:

演示:

arrayVariable

返回类字段,或方法变量中的数组类型变量名称。离得近的将被优先推荐

演示:

lineCommentStart~commentEnd

lineCommentStartblockCommentStartblockCommentEndcommentStartcommentEnd在不同的语言环境中表现是不一致的。

lineCommentStart返回当前语言中指示行注释开始的字符。

blockCommentStartblockCommentEnd则返回当前语言中指示块注释开始,结束的字符。

commentStartcommentEnd视情况而定,若当前语言有行注释则与lineComment表现一致(行注释通常没结束标记commentEnd为空),若没有行注释则与blockComment表现一致。

演示:

camelCase(<String>)~firstWord(<String>)

camelCase(<String>)

参数内容转换为驼峰形式。可以转换空格,下划线,中划线分割的字符串(之后的一些表达式也都是类似机制,因此不再单独录制演示)。

演示:

snakeCase(<String>)

将参数内容字符串转换为下划线分割形式,例如将user name,userName,user-name转换为user_name

spaceSeparated(<String>)

将字符串转换为空格分开形式(不会改变原来的大小写状态),例如将userNameuser Nameuser-Name转换为user Name

spacesToUnderscores(<String>)

将字符串的空格替换为下划线,例如将user name转换为user_name,将user name(两个空格)替换为user__name

capitalize(<String>)

将字符串首字母设为大写,例如将username转换为Username

capitalizeAndUnderscore(<String>)

将字符串转换为大写并用下划线隔开 ,例如将UserNameuser nameuser-name转换为USER_NAME

decapitalize(<String>)

将字符串首字母设为小写,例如将Username转换为username

underscoresToCamelCase(<String>)

将字符串下划线形式转换为驼峰形式,例如将user_name转换为userName,将user_NAME转换为userName,将USERNAME转换为username。

underscoresToSpaces(<String>)

将字符串下划线替换为空格,例如将user_name转换为user name。

lowercaseAndDash(<String>)

将字符串转换为小写并用中划线隔开 ,例如将UserNameuser nameuser_name转换为user-name

escapeString(<String>)

对字符串中的特殊字符进行转义,以便在java字符串中进行使用。例如将”转换为\“。

substringBefore(<String>, <Delimeter>)

截取字符串在<Delimeter>之前的部分 ,例如substringBefore(“fileName.zip”,”.”)返回fileName。

firstWord(<String>)

返回字符串中的第一个单词。例如user name返回user

castToLeftSideType与rightSideType

由于castToLeftSideType需要比对左右侧变量类型,左侧类型可以等待任务光标完成编辑,右侧却不行,因此任务光标到达castToLeftSideType变量处时,右侧变量需要是已知类型。

演示:

rightSideType可以获取右侧类型作为默认值,因此任务光标到达时右侧变量也需要是已知类型。需要注意的是rightSideType似乎必须定义一个默认值,否则将获取不到任何提示

演示:

className~qualifiedClassName

className返回当前类名,可用作构造函数预定义构造函数,日志对象之类的模板。

currentPackage返回当前包名。

qualifiedClassName则是二者的拼接。

演示:

clipboard

返回剪贴板内容。

演示:

componentTypeOf(<array>)

返回参数的数组类型 。

演示:

concat(<String>, …)

拼接参数中的所有字符串。

演示:

date([format])

指定格式化方式返回当前系统时间字符串,格式化字符串遵循SimpleDateFormat格式。

演示:

descendantClassesEnum(<String>)

返回指定类的子类。

演示:

enum(<String>, …)

自行指定返回的字符串列表。

演示:

expectedType

自动识别并返回期望的类型,可以用于赋值,方法参数,返回语句处。

演示:

fileName~fileRelativePath

fileName返回当前文件名(带拓展名)。

fileNameWithoutExtension返回当前文件名(不带拓展名)。

filePath返回文件全路径(带拓展名)。

fileRelativePath返回文件相对当前项目的路径(带拓展名)。

演示:

groovyScript(<String>, [arg, …])

执行作为字符串形式传递的groovy脚本,第一个参数为脚本内容或脚本文件路径 ,之后的参数都为可选参数。

如果要在脚本中调用可选参数可以使用_1,_2,_3以此类推,要访问当前编辑器可以使用_editor变量。

此段脚本为两个变量做一个简单的拼接:

1
groovyScript("return \"${_1}\" + \"${_2}\"",var1,var2)

演示:

guessElementType(<Collection>)

返回集合中的泛型类型。

演示:

iterableComponentType(<Iterable>)

返回可迭代对象中的泛型类型,使用于数组,对象及其他任意实现Iterable接口的对象。

演示:

classNameComplete

触发一次类名相关的补全提示。

演示:

methodParameters

获取所有的参数名,返回时在外面拼接[]。

演示:

regularExpression(<String>, <Pattern>, <Replacement>)

查找字符串中满足<Pattern>的所有部分并替换为<Replacement> ,支持所有标准正则表达式。

演示:

typeOfVariable(<String>)

返回变量的类型。

演示:

variableOfType(<String>)~ subtypes(<String>)

variableOfType返回所有满足类型条件的变量,如果传入””则会返回所有的可用变量,距离较近的变量优先展示。

suggestFirstVariableNamevariableOfType类似,但不会推荐true,false,this,和super。

subtypes返回指定类型的子类型。

演示:

posted @ 2021-11-09 14:43  就永远夏天  阅读(3142)  评论(0)    收藏  举报