实时模板变量
当您展开 实时模板 缩写时,其变量要么显示为可输入值的字段,要么被值替换。 这些值可能是您可以修改的默认值,或者是使用 函数 计算得出的值。
要在模板中声明变量,请使用以下格式:
$VAR$
。
在表达式中,请使用不带开头和结尾的美元字符的变量名
$
,例如
lowercaseAndDash(ComponentName)
。
通过表达式定义每个变量,并在表达式求值失败时提供默认值。
此表达式可能包含以下结构:
-
双引号中的字符串常量
-
在动态模板中定义的其他变量的名称
-
预定义函数 及其可能的参数
配置模板变量
预定义模板变量
IntelliJ IDEA 支持以下无法修改的预定义 实时模板 变量:
-
$END$
表示代码段完成时文本光标的位置,您不能再按 Tab 跳到下一个变量。 -
$SELECTION$
用于环绕模板,表示要包装的代码片段。 模板展开后,会按照模板中的指定方式包装所选文本。 例如,如果您在代码中选择EXAMPLE
并通过指定的缩写或按下 Ctrl+Alt+T 并从列表中选择所需的模板来调用"$SELECTION$"
模板,IntelliJ IDEA 将如下所示将所选内容用双引号括起来:"EXAMPLE"
。
用于实时模板变量的函数
以下函数可用于定义 实时模板 变量:
函数 |
描述 |
---|---|
|
返回使用指定限定名称注释的类、方法或字段。 如果您的项目中有多个带有指定注解的程序元素,系统会显示一个供您选择的列表。
例如,
某些预定义的实时模板在
RESTful Web 服务
和
Web 服务
组中使用了
|
|
建议 Kotlin 对象表达式的超类型。 仅在 Kotlin 上下文中可用。 |
|
返回当前作用域内最近声明的数组(作为方法变量或类字段)。 如果当前作用域中声明了多个数组,它还会显示一个列表以供您选择。
例如,如果您有以下方法,并在两个数组声明之后使用包含
public String getCode() {
int a[] = new int[5];
int b[] = new int[10];
return code;
一些预定义的动态模板在
迭代
组(
|
|
返回指示当前语言上下文中块注释结尾的字符。
例如,在 Java 文件中返回
|
|
返回表示当前语言环境中块注释开始的字符。
例如,在 Java 文件中返回
|
|
将字符串转换为 camelCase 。
例如,
|
|
将字符串的首字母大写。
例如,
|
|
将字符串中的所有字母大写,并在各部分之间插入下划线。
例如,
|
|
如果有必要,将右侧表达式转换为左侧表达式类型。
某些
迭代
组中的预定义模板使用
与 rightSideType() 对比。 |
|
返回当前类的名称(您展开模板的地方)。 对构造函数模板可能会有用。 仅在 Java 上下文中可用。 |
|
返回系统剪贴板的内容。 |
|
返回指示当前语言环境中注释结尾的字符。 对于带有行注释的语言,返回值为空。 |
|
返回指示当前语言环境中注释开始的字符。 对于包含行注释的语言,返回值是行注释的开头,与 lineCommentStart() 相同。 |
|
在变量的位置调用 代码补全 。 |
|
在变量的位置调用 智能类型完成 。 |
|
返回数组的组件类型。
例如,您可以将
arrayVariable()
的返回值传递给
仅在 Java 上下文中可用。 |
|
返回传递给函数作为参数的所有字符串的连接。
例如,
|
|
返回当前包的名称(包含您展开模板的类)。 仅在 Java 上下文中可用。 |
|
返回当前系统日期。
默认情况下,如果没有参数,它会以当前系统格式返回日期。 要使用不同的格式,请根据
SimpleDateFormat
规范提供参数。 例如,
|
|
返回表或视图的列的列表。
|
|
返回表或视图的名称。
|
|
将字符串的首字母替换为相应的小写字母。
例如,
|
|
返回指定类的子类。
如果有多个子类,则显示一个子类列表,您可以从中选择。 例如,
仅在 Java 上下文中可用。 |
|
返回模板展开时建议完成的字符串列表。
例如,
|
|
转义特殊字符以便结果可以在 Java 字符串中使用。
例如,它将制表符替换为
|
|
返回模板展开处表达式的预期类型(在赋值右侧、
仅在 Java 上下文中可用。 |
|
返回当前文件及其扩展名。 |
|
返回当前文件的名称,不包含其扩展名。 |
|
返回当前文件的绝对路径。 |
|
返回相对于当前项目的当前文件路径。 要检查给定文件的相对路径,右键点击它并选择 复制引用 ,或按 Ctrl+Alt+Shift+C 。 |
|
返回作为参数传递的字符串的第一个单词。
例如,
|
|
执行作为字符串传递的 Groovy 脚本。
第一个参数是一个字符串,内容可以是脚本的文本或包含脚本的文件路径。 函数将其他可选参数作为值传递给脚本的
以下示例显示了一个
groovyScript("_1.toUpperCase()", MyVar)
以下示例展示了一个
groovyScript("def result = ''; _1.split().eachWithIndex { item, index -> result = result + index.next() + '. ' + item + System.lineSeparator() }; return result;", SELECTION)
最后一个例子使用了
|
|
返回
|
|
返回一个可迭代对象的类型,例如数组或集合。 仅在 Java 上下文中可用。 |
|
返回当前作用域中最近声明的可迭代对象(如数组或集合)。 如果当前作用域中有多个可迭代对象,它还会显示一个供您选择的列表。
预定义的 实时模板
仅在 Java 上下文中可用。 |
|
返回当前语言环境中表示行注释开始的字符。 |
|
返回当前行号。 |
|
将字符串转换为小写并插入短横线作为分隔符。 例如,
|
|
返回模板展开的方法名称。 仅在 Java 上下文中可用。 |
|
返回模板展开所在方法的参数类型列表。 仅在 Java 上下文中可用。 |
|
返回模板扩展的方法中参数名称的列表。 仅在 Java 上下文中可用。 |
|
返回模板展开的当前方法返回值的类型。 仅在 Java 上下文中可用。 |
|
返回模板展开的当前类的完全限定名称。 仅在 Java 上下文中可用。 |
|
查找
例如,
|
|
声明左侧变量,其类型由右侧表达式决定。
某些
迭代
组中的预定义模板使用
与 castToLeftSideType() 比较。 仅在 Java 上下文中可用。 |
|
将字符串转换为
snake_case
。 例如,
|
|
返回指定字符串,并使用空格作为分隔符。 例如,
|
|
将参数字符串中的空格替换为下划线。 例如,
|
|
返回子字符串,直到指定的分隔符。 这有助于删除测试文件名中的扩展名。 例如,
|
|
返回当前作用域中作为字符串传递的类型的子类型。
预定义的
仅在 Java 上下文中可用。 |
|
返回在给定上下文中可能分配给作为参数传递的类型的所有变量。
这与
variableOfType()
类似,但它不会建议
|
|
返回迭代中索引变量的建议名称,常用的有:
某些在
迭代
组别 (
|
|
根据您的代码风格设置中关于变量命名规则的要求,基于变量类型及其初始化表达式建议变量名称。
例如,如果它是一个在迭代中持有元素的变量,IntelliJ IDEA 会根据迭代容器的名称来猜测最合理的名称。 部分预定义模板在
迭代
组 (
|
|
返回当前系统时间。
默认情况下,在没有参数的情况下,它会返回当前系统格式的时间。 要使用不同的格式,请根据
SimpleDateFormat
规范提供参数。 例如,
|
|
返回传递为参数的变量类型。 仅在 Java 上下文中可用。 |
|
返回对象参数的类型(例如,集合元素的类型)。 它接受两个参数:
例如,
仅在 Java 上下文中可用。
另请参见 Java
|
|
将带有下划线的字符串(如
snake_case
)转换为
camelCase
。 例如,
|
|
将字符串中的下划线转换为空格。 例如,
|
|
返回当前用户的名称。 |
|
返回所有可能分配给作为参数传递的类型的变量。 例如,
如果您将一个空字符串
与
suggestFirstVariableName()
不同,此函数还返回标准表达式,例如
|
示例
让我们使用变量和 函数 制作一个简单的实时模板。 它将创建一个具有预定义属性和方法的 Java 类。 模板将包含三个变量:
-
$ClassName$
:新类的名称 -
$Food$
:三个可能的值列表:“meat”、“grass”和“honey” -
$AnimalName$
:类名以小写字母开头,因此可以在句子中使用
创建一个带有变量的模板
-
按 Ctrl+Alt+S 打开设置,然后选择
。 -
选择 Java 组,点击
,然后选择 实时模板 。
-
在 缩写 字段中,指定将用于扩展模板的字符。 例如,
动物
。 -
在 模板文本 字段中,粘贴以下模板:
class $ClassName$ extends Animal { String food = "$Food$";