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
lineCommentStart,blockCommentStart,blockCommentEnd,commentStart和commentEnd在不同的语言环境中表现是不一致的。
lineCommentStart返回当前语言中指示行注释开始的字符。
blockCommentStart和blockCommentEnd则返回当前语言中指示块注释开始,结束的字符。
commentStart和commentEnd视情况而定,若当前语言有行注释则与lineComment表现一致(行注释通常没结束标记commentEnd为空),若没有行注释则与blockComment表现一致。
演示:
camelCase(<String>)~firstWord(<String>)
camelCase(<String>)
将参数内容转换为驼峰形式。可以转换空格,下划线,中划线分割的字符串(之后的一些表达式也都是类似机制,因此不再单独录制演示)。
演示:
snakeCase(<String>)
将参数内容字符串转换为下划线分割形式,例如将user name,userName,user-name转换为user_name
spaceSeparated(<String>)
将字符串转换为空格分开形式(不会改变原来的大小写状态),例如将userName,user Name和user-Name转换为user Name
spacesToUnderscores(<String>)
将字符串的空格替换为下划线,例如将user name转换为user_name,将user name(两个空格)替换为user__name
capitalize(<String>)
将字符串首字母设为大写,例如将username转换为Username
capitalizeAndUnderscore(<String>)
将字符串转换为大写并用下划线隔开 ,例如将UserName,user name和user-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>)
将字符串转换为小写并用中划线隔开 ,例如将UserName,user name和user_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返回所有满足类型条件的变量,如果传入””则会返回所有的可用变量,距离较近的变量优先展示。
suggestFirstVariableName和variableOfType类似,但不会推荐true,false,this,和super。
variableOfType和suggestFirstVariableName对比
subtypes返回指定类型的子类型。
演示:
</div>
- 本文链接: http://www.ice-maple.com/2020/06/07/Idea Live Templates/
- 版权声明: 本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
欢迎关注我的其它发布渠道
<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">
©
2020
94k
1:25
</div>
</footer>
<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>
</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
lineCommentStart,blockCommentStart,blockCommentEnd,commentStart和commentEnd在不同的语言环境中表现是不一致的。
lineCommentStart返回当前语言中指示行注释开始的字符。
blockCommentStart和blockCommentEnd则返回当前语言中指示块注释开始,结束的字符。
commentStart和commentEnd视情况而定,若当前语言有行注释则与lineComment表现一致(行注释通常没结束标记commentEnd为空),若没有行注释则与blockComment表现一致。
演示:
camelCase(<String>)~firstWord(<String>)
camelCase(<String>)
将参数内容转换为驼峰形式。可以转换空格,下划线,中划线分割的字符串(之后的一些表达式也都是类似机制,因此不再单独录制演示)。
演示:
snakeCase(<String>)
将参数内容字符串转换为下划线分割形式,例如将user name,userName,user-name转换为user_name
spaceSeparated(<String>)
将字符串转换为空格分开形式(不会改变原来的大小写状态),例如将userName,user Name和user-Name转换为user Name
spacesToUnderscores(<String>)
将字符串的空格替换为下划线,例如将user name转换为user_name,将user name(两个空格)替换为user__name
capitalize(<String>)
将字符串首字母设为大写,例如将username转换为Username
capitalizeAndUnderscore(<String>)
将字符串转换为大写并用下划线隔开 ,例如将UserName,user name和user-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>)
将字符串转换为小写并用中划线隔开 ,例如将UserName,user name和user_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返回所有满足类型条件的变量,如果传入””则会返回所有的可用变量,距离较近的变量优先展示。
suggestFirstVariableName和variableOfType类似,但不会推荐true,false,this,和super。
variableOfType和suggestFirstVariableName对比
subtypes返回指定类型的子类型。
演示:


















































浙公网安备 33010602011771号