分享自己idea中常用的LIveTemplate,提高编写代码效率
注释
abbreviation:*
template text:
*
*
* @author xxx
* @date $date$ $time$$param$ $return$
*/
Edit variables:
# 具体参数表达式param
groovyScript("def result = '';def params = \"${_1}\".replaceAll('[\\\\[|\\\\]|\\\\s]', '').split(',').toList(); for(i = 0; i < params.size(); i++) {if(params[i] != '')result+='* @param ' + params[i] + ((i < params.size() - 1) ? '\\r\\n ' : '')}; return result == '' ? null : '\\r\\n ' + result", methodParameters())
# 具体参数表达式return
groovyScript("return \"${_1}\" == 'void' ? null : '\\r\\n * @return ' + \"${_1}\"", methodReturnType())
效果:
打印日志
abbreviation:logm
template text:
log.info($content$,$params$);
Edit variables:
# 具体参数表达式content
groovyScript("def params = _2.collect {'['+it+' = {}]'}.join(', '); return '\"' + _1 + '() called with parameters => ' + (params.empty ? '' : params) + '\"'", methodName(), methodParameters())
# 具体参数表达式params
groovyScript("def params = _1.collect {it}.join(', '); return (params.empty ? '' : params) ", methodParameters())
效果:
定义对象List
abbreviation:dlobj
template text:
List<$OBJECT$> $OBJECT$List = new ArrayList<>();
for (int i = 1; i < 6; i++) {
$OBJECT$ $ENTITY$ = new $OBJECT$();
$END$
$OBJECT$List.add($ENTITY$);
}
Edit variables:
效果:
Expression函数整理
| 表达式 | 含义 |
|---|---|
| annotated() | 返回具有指定注解的类,方法或字段名 |
| arrayVariable() | 返回当前范围内数组变量,最近的优先展示 |
| lineCommentStart() | 返回当前语言指示行注释开始的字符 |
| blockCommentStart() | 返回当前语言指示块注释开始的字符 |
| blockCommentEnd() | 返回当前语言指示块注释结束的字符 |
| commentStart() | 返回当前语言指示注释开始的字符,对有行注释的返回行注释开头 |
| commentEnd() | 返回当前语言指示注释结束的字符,对有行注释的返回空(行注释通常没有结束字符) |
| camelCase() | 将字符串转换为驼峰形式 |
| snakeCase() | 将字符串转换为下划线分割形式 |
| spaceSeparated() | 将字符串转换为空格分开形式 |
| spacesToUnderscores() | 将字符串的空格替换为下划线 |
| capitalize() | 将字符串首字母设为大写 |
| capitalizeAndUnderscore() | 将字符串转换为大写并用下划线隔开 |
| decapitalize() | 将字符串首字母设为小写 |
| underscoresToCamelCase() | 将下划线形式字符串转换为驼峰形式 |
| underscoresToSpaces() | 将下划线形式字符串转换为空格隔开形式 |
| lowercaseAndDash() | 将字符串转为小写并使用中划线分割 |
| escapeString() | 将字符串中的特殊符号进行转义,便于在java字符串中使用 |
| substringBefore(, ) | 截取字符串在之前的部分 |
| firstWord() | 返回字符串中的首个单词 |
| castToLeftSideType() | 获取左侧变量的类型判断是否需要强转 |
| rightSideType() | 获取右侧表达式的变量类型 |
| className() | 返回当前所在类(在内部类则返回内部类)类名 |
| currentPackage() | 返回当前所在包名 |
| qualifiedClassName() | 返回当前所在类(在内部类则返回内部类)的全限定类名(包+类名) |
| classNameComplete() | 触发类名相关的代码补全 |
| clipboard() | 返回系统剪贴板的内容 |
| complete() | 调用一次代码补全,相当于调用一次Ctrl+Space |
| completeSmart() | 调用一次智能代码补全,相当于调用一次Ctrl+Alt+Space |
| componentTypeOf() | 返回数组类型 |
| concat(, …) | 拼接字符串 |
| date([format]) | 指定格式化方式返回当前系统时间字符串(根据SimpleDateFormat格式) |
| time([format]) | 指定格式化方式返回当前系统时间字符串(无日期,根据SimpleDateFormat格式) |
| descendantClassesEnum() | 返回指定类的子类 |
| lineNumber() | 返回当前行行号 |
| enum(, …) | 返回建议的字符串列表 |
| expectedType() | 自动识别并返回期望的类型,一般用于赋值,方法参数,返回语句处。 |
| fileName() | 返回当前文件名(带拓展名) |
| fileNameWithoutExtension() | 返回当前文件名(不带拓展名) |
| filePath() | 返回当前文件路径(带拓展名) |
| fileRelativePath() | 返回当前文件相对当前项目的路径(带拓展名) |
| groovyScript(, [arg, …]) | 执行作为字符串形式传递的groovy脚本 |
| guessElementType() | 返回集合中元素的类型 |
| iterableComponentType() | 返回可迭代对象的类型 |
| iterableVariable() | 返回当前范围内可迭代类型对象,最近的优先展示 |
| methodName() | 返回当前所在方法名 |
| methodParameters() | 返回当前所在方法的所有参数名 |
| methodReturnType() | 返回当前所在方法的返回类型 |
| regularExpression(, , ) | 查找字符串中满足的所有部分并替换为 |
| typeOfVariable() | 返回变量的类型 |
| variableOfType() | 返回当前范围内满足类型条件的变量,最近的优先展示 |
| suggestFirstVariableName() | 返回当前范围内满足类型条件的部分变量,最近的优先展示和variableOfType类似但不推荐true,false,this,和super |
| subtypes() | 返回指定类型的子类型 |
| suggestIndexName() | 返回当前范围中未使用的第一个常用迭代下标变量名(i,j,k等) |
| suggestVariableName() | 根据变量命名规则的代码风格设置返回建议的变量名 |
| suggestShortVariableName() | 建议的变量名精简版 |
| user() | 返回当前系统的用户名称 |
得到剪切板小写类名: decapitalize(groovyScript("_1.tokenize('.')[-1]", clipboard()))