IntelliJ IDEA Live Temlates功能使用举例介绍
Live Templates介绍
IDEA的Live Templates功能使用起来可以提高很多编码效率,谁用谁知道,自带的功能就已经很强大,关于自带模版短语请自行查找,而如何添加自定义短语模版网上也是一抓一大把,但是大多都是抄来抄去,重复介绍功能菜单在哪里进入,缺少了案例,导致很多初学者都摸不着道,这里简单介绍一些使用样例,经验不足还忘指教。
如何添加自定义短语模版
- 按ctrl+alt+s打开设置窗口
- 选择editor > live templates
- 新增或者选择自己喜欢的分组
- 点击右上角的加号,添加live template
模版介绍
Abbreviation
设置短语Template text
模版内容Edit variables
编辑自定义变量Applicable
设置短语有效位置(表达式?方法内?类和方法定义区?)
定义变量
在模版内容里写预设模版,使用$符号包裹的字符串将作为变量,可以通过Edit variables设置来输入和替换想要的实际内容。
Name
变量名
Expression
变量表达式,可以使用预设的方法来修饰变量内容
Default value
顾名思义,填写默认值
Skip if define
如果这个变量只是用来获取内容而不需要手动输入,可以勾选此项
模版变量关联
这里使用了预设方法camelCase
对应的反向转换是capitalizeAndUnderscore
,ciName
是待输入项,strName
调用了camelCase
方法并传入ciName
,关联ciName
的输入,转为驼峰命名法。
获取编辑器上下文中的变量
可以通过completeSmart
方法获取上下文中定义的变量,其中$END$
为预设变量,当自定义变量输入完成后按Tab光标会跳到这里(选定智能匹配对象后光标会跳到括号后面)
获取当前类名和方法名
通过className
和methodName
方法可以获取到当前类的类名和当前方法的方法名
Applicable选择作用范围
statement
表示方法内部
expression
是表达式里,比如if()的括号内部和方法内部也可以
declaration
在类的定义变量的地方
预设的Expression方法
以下函数可用于定义实时模板变量:
摘抄自: http://www.jetbrains.com/help/idea/template-variables.html.
功能 | 描述 |
---|---|
annotated("annotation qname") | 使用驻留在指定位置的注释创建类型的符号。有关示例,请参阅迭代组中的实时模板。 |
anonymousSuper() | 建议Kotlin对象表达式的超类型。 |
arrayVariable() | 建议适用于当前范围的所有数组变量。有关示例,请参阅迭代组中的实时模板。 |
| 返回表示当前语言上下文中块注释结束的字符。 |
| 返回指示当前语言上下文中块注释开始的字符。 |
camelCase(String) | 将字符串转换为camelCase。例如 |
capitalize(String) | 大写参数的第一个字母。 |
capitalizeAndUnderscore(sCamelCaseName) | 将作为参数传递的CamelCase名称的所有字母大写,并在各部分之间插入下划线。例如, |
castToLeftSideType() | 将右侧表达式转换为左侧表达式类型。它在迭代组中用于生成单个模板,用于生成原始类型和泛型集合。 |
className() | 返回当前类的名称(扩展模板的类)。 |
classNameComplete() | 此表达式替换变量位置处的类名称完成。 |
clipboard() | 返回系统剪贴板的内容。 |
| 返回指示当前语言上下文中注释结尾的字符。如果以当前语言定义行注释,则返回值为空。 |
| 返回指示当前语言上下文中注释开头的字符。如果使用当前语言定义行注释,则最好使用其开始指示符。 |
complete() | 在变量的位置调用代码完成。 |
completeSmart() | 在变量的位置调用智能类型完成。 |
componentTypeOf(<array>) | 返回数组的组件类型。例如,请参阅迭代组和另一组中的实时模板。 |
| 返回作为参数传递给函数的所有字符串的串联。 |
currentPackage() | 返回当前包名称。 |
date(sDate) | 以指定格式返回当前系统日期。 如果没有参数,则以默认系统格式返回当前日期。 ![]() |
decapitalize(sName) | 用相应的小写字母替换参数的第一个字母。 |
defaultReturnValues | 如果在return语句中使用表达式,则返回默认值。 |
descendantClassEnum(<String>) | 返回指定为字符串参数的类的子级。 |
enum(sCompletionString1,sCompletionString2,...) | 返回扩展模板时建议完成的逗号分隔字符串列表。 |
escapeString(sEscapeString) | 转义指定为参数的字符串。 |
expectedType() | 返回模板扩展到的表达式的预期类型。如果模板在作业的正确部分,之后 |
fileName() | 返回当前文件的名称及其扩展名。 |
fileNameWithoutExtension() | 返回没有扩展名的当前文件的名称。 |
firstWord(sFirstWord) | 返回作为参数传递的字符串的第一个单词。 |
groovyScript("groovy code", arg1) | 返回具有指定代码的Groovy脚本。 您可以使用 |
guessElementType (<container>) | 猜测存储在a中的元素的类型 |
iterableComponentType(<ArrayOrIterable>) | 返回可迭代组件的类型,例如数组或集合。 |
iterableVariable() | 返回可以迭代的变量的名称。 |
| 返回当前JavaScript数组的名称。 |
jsClassName() | 返回当前JavaScript类的名称。 |
| 返回当前JavaScript组件的类型。 |
| 根据模块的名称,返回参数 |
jsMethodName() | 返回当前JavaScript方法的名称。 |
| 返回当前JavaScript类的完整名称。 |
| 返回一个建议的名称从最常用的一个指标变量: |
| 根据引用变量命名规则的代码样式设置,根据变量类型和初始化表达式返回变量的建议名称。 |
| Boolean参数确定当前上下文中是否允许常量。如果未指定参数,则允许使用常量。当模板扩展,列表显示有 |
| 建议该类型的import语句的名称 |
| 返回表示当前语言上下文中行注释开头的字符。 |
lineNumber() | 返回当前行号。 |
lowercaseAndDash(String) | 将camelCase字符串转换为小写,并将n-dashes作为分隔符插入。例如, |
regularExpression(String, Pattern, Replacement) | 根据指定的模式在字符串中进行替换。 |
methodName() | 返回展开模板的方法的名称。 |
methodParameters() | 返回展开模板的方法的参数列表。 |
methodReturnType() | 返回当前方法返回的值的类型(模板在其中展开)。 |
qualifiedClassName() | 返回当前类的完全限定名称(扩展模板的名称)。 |
rightSideType() | 使用右侧表达式的类型声明左侧变量。它在迭代组中用于生成单个模板,用于生成原始类型和泛型集合。 |
| 将字符串转换为snake_case。例如, |
spaceSeparated(String) | 将字符串转换为小写并将空格作为分隔符插入。例如, |
spacesToUnderscores(sParameterWithSpaces) | 用作为参数传递的字符串中的下划线替换空格。例如, |
substringBefore(String,Delimiter) | 删除指定分隔符后面的扩展名,并仅返回文件名。这是测试的文件名有帮助(例如, |
subtypes(sType) | 返回作为参数传递的类型的子类型。 |
suggestFirstVariableName(sFirstVariableName) | 不建议 |
suggestIndexName() | 表明从最常用的索引变量的名称: |
suggestVariableName() | 根据引用变量命名规则的代码样式设置,根据变量类型及其初始化表达式建议变量的名称。 |
time(sSystemTime) | 以指定格式返回当前系统时间。 |
typeOfVariable(VAR) | 返回作为参数传递的变量的类型。 |
underscoresToCamelCase(String) | 用作为参数传递的字符串中的camelCase字母替换下划线。例如, |
underscoresToSpaces(sParameterWithUnderscores) | 用作为参数传递的字符串中的空格替换下划线。例如, |
user() | 返回当前用户的名称。 |
variableOfType(<type>) | 建议可以分配给作为参数传递的类型的所有变量,例如 |