# 编辑模板变量对话框

> For the complete documentation index, see [llms.txt](https://www.jetbrains.com/zh-cn/help/idea/llms.txt).

> **TL;DR**
> `文件 | 设置 | 编辑器 | 代码模板 - 编辑变量`  适用于 Windows 和 Linux
>
>
>
> `%instance% | 设置 | 编辑器 | 实时模板 - 编辑变量`  适用于 macOS
>
>
>
> `Ctrl+Alt+S` (Windows), `⌘ Comma` (macOS), `⌘ Comma` (IntelliJ IDEA Classic (macOS)), `⌘ Comma` (macOS System Shortcuts), `Ctrl+Alt+S` (XWin), `Ctrl+Alt+S` (GNOME), `Ctrl+Alt+S` (KDE), `Ctrl+Alt+S` (Emacs), `Ctrl+Alt+S` (Sublime Text), `⌘ Comma` (Sublime Text (macOS)), `Ctrl+Alt+S` (Visual Studio), `⌘ Comma` (Visual Studio (macOS)), `Ctrl+Alt+S` (NetBeans), `Ctrl+Alt+S` (Eclipse), `⌘ Comma` (Eclipse (macOS)) !["设置"图标](https://resources.jetbrains.com/help/img/idea/2026.3/app.expui.general.settings.svg)

如果一个 [实时模板](using-live-templates.html)包含 [用户自定义变量](template-variables.html)，您可以使用   编辑模板变量  对话框来配置定义这些变量的表达式。

## 控制

|  条目  |  描述  |
| --- | --- |
|  名称  |  在此字段中，以  `$<variable_name>$`  格式查看或编辑变量名称。  |
|  表达式  |     在此字段中，指定表达式以自动计算相应模板输入字段的值。       此表达式可能包含以下结构：        * 双引号中的字符串常量    * 实时模板中定义的其他变量名称    * [预定义函数](template-variables.html#predefined_functions)及其可能的参数      您可以手动输入表达式或从列表中选择预定义函数。 列表还显示了所选函数的参数数量和类型（如果有）。 可用功能按字母顺序列在 [Functions](#predefined_functions)表中。     |
|  默认值  |     在该字段中，指定默认字符串，以便在展开的模板的相应输入字段中输入该字符串，如果表达式在计算后未产生任何结果。       请注意，变量的默认值是一个表达式，可以引用其他实时模板变量。 要将默认值定义为文字，请将其括在引号中。     |
|  如果已定义，则跳过  |  选中此复选框，如果当前输入字段的值已定义，则让 IntelliJ IDEA 继续下一个输入字段。  |
|  上移 / 下移  |  使用这些按钮更改列表中变量的顺序。 表中变量的顺序决定了 IntelliJ IDEA 在模板展开时在相应输入字段之间切换的顺序。  |

## 在实时模板变量中使用的函数

|  条目  |  描述  |
| --- | --- |
|   `annotated(<annotation>)`   |     返回带有指定限定名称注解的类、方法或字段。 如果项目中有多个带有指定注解的程序元素，将显示一个列表供您选择。       例如，  `annotated("java.lang.Deprecated")`  返回所有用  `@Deprecated`  注释的程序元素。         RESTful Web 服务   和   Web 服务   组中的某些预定义实时模板使用  `annotated()`  函数／方法。     |
|   `anonymousSuper()`   |     为 Kotlin 对象表达式建议一个超类型。       仅在   Kotlin   上下文中可用。     |
|   `arrayVariable()`   |     返回当前作用域中最近声明的数组（作为方法变量或类字段）。 如果当前作用域中声明了多个数组，还会显示一个列表供您选择。       例如，如果有以下方法，并在两个数组声明之后展开包含使用  `arrayVariable()`  函数／方法的变量的模板，则默认返回  `b`  数组，并且还会建议选择  `a`  以及其他定义为类字段的数组：       ```JAVA public String getCode() {  int a[] = new int[5]; int b[] = new int[10];  return code; }  ```        迭代   组中的某些预定义实时模板（  `itar`  和  `ritar` ）使用  `arrayVariable()`  函数／方法。     |
|   `blockCommentEnd()`   |     返回指示当前语言上下文中块注释结束的字符。       例如，在 Java 文件中返回  `*/` 。     |
|   `blockCommentStart()`   |     返回指示当前语言上下文中块注释起始的字符。       例如，在 Java 文件中返回  `/*` 。     |
|   `camelCase(<String>)`   |     将字符串转换为  camelCase 。       例如，  `camelCase("my-text-file")` 、  `camelCase("my text file")`  和  `camelCase("my_text_file")`  均返回  `myTextFile` 。     |
|   `capitalize(<String>)`   |     将字符串的首字母大写。       例如，  `capitalize("name")`  返回  `名称` 。 或者，可以将其组合为  `capitalize(camelCase("my awesome class"))`  以获得  `MyAwesomeClass` 。     |
|   `capitalizeAndUnderscore(<String>)`   |     将字符串的所有字母转换为大写，并在各部分之间插入下划线。       例如，  `capitalizeAndUnderscore("FooBar")` 、  `capitalizeAndUnderscore("foo bar")`  和  `capitalizeAndUnderscore("foo-bar")`  均返回  `FOO_BAR` 。     |
|   `castToLeftSideType()`   |     必要时将右侧表达式转换为左侧表达式类型。         迭代   组中的某些预定义模板使用  `castToLeftSideType()`  函数／方法，以便为原始类型和泛型类型使用单个模板。       可与 [rightSideType()](#rightSideType) 进行比较。     |
|   `className()`   |     返回当前类的名称（展开模板的位置）。 可用于构造函数模板。       仅在   Java   上下文中可用。     |
|   `clipboard()`   |  返回系统剪贴板的内容。  |
|   `commentEnd()`   |  返回指示当前语言上下文中注释结束的字符。 对于带有行注释的语言，返回值为空。  |
|   `commentStart()`   |  返回指示当前语言上下文中注释起始的字符。 对于具有行注释的语言，返回值是行注释的起始，与 [lineCommentStart()](#lineCommentStart) 相同。  |
|   `complete()`   |  在变量的位置调用 [代码补全](auto-completing-code.html)。  |
|   `completeSmart()`   |  在变量位置调用 [智能类型补全](null)。  |
|   `componentTypeOf(<array>)`   |     返回数组的组件类型。       例如，您可以将 [arrayVariable()](#arrayVariable) 的返回值传递给  `componentTypeOf()`  函数。  `itar`  模板使用此逻辑来正确指定数组的迭代元素。       仅在   Java   上下文中可用。     |
|   `concat(<String>, ...)`   |     返回作为形参传递给函数／方法的所有字符串的连接结果。       例如，  `concat(date()," ",user())`  返回当前系统日期和用户名，中间用空格分隔。     |
|   `currentPackage()`   |     返回当前包的名称（包含您展开模板的类）。       仅在   Java   上下文中可用。     |
|   `日期（[格式]）`   |     返回当前系统日期。       默认情况下，如果没有形参，则返回当前系统格式的日期。 要使用其他格式，请按照 [SimpleDateFormat](https://docs.oracle.com/javase/7/docs/api/java/text/SimpleDateFormat.html) 规范提供形参。 例如，  `date("Y-MM-d, E, H:m")`  返回的日期格式为  `2020-02-27, Thu, 16:11` 。     |
|   `dbColumns()`   |     返回表或视图的列列表。  `dbColumns()`  用于上下文实时模板（例如  `插入` ）。 可以通过右键点击对象并选择   SQL 脚本   来访问上下文实时模板。     |
|   `dbObjectName()`   |     返回表或视图的名称。  `dbObjectName()`  用于上下文实时模板（例如  `top` ）。 可以通过右键点击对象并选择   SQL 脚本   来访问上下文实时模板。     |
|   `decapitalize(<String>)`   |     将字符串的首字母替换为相应的小写字母。       例如，  `decapitalize("Name")`  返回  `名称` 。     |
|   `descendantClassEnum(<String>)`   |     返回指定类的子类。       如果有多个子类，将显示一个子类列表供您选择。 例如，  `descendantClassEnum("java.lang.Number")`  返回所有数字类型类，例如，  `java.lang.Float` 、  `java.math.BigDecimal`  等等。       仅在   Java   上下文中可用。     |
|   `enum(<String>, ...)`   |     模板展开时，返回建议用于补全的字符串列表。       例如，  `enum("Foo","Bar","Baz")`  会显示一个列表，您可以从中选择指定字符串之一。     |
|   `escapeString(<String>)`   |     转义特殊字符，以便结果可用于 Java 字符串。       例如，它会将制表符替换为  `\t` ，将换行符替换为  `\n` ，将反斜杠转义为  `\\` ，将引用转义为  `\"` ，依此类推。     |
|   `expectedType()`   |     返回模板展开位置的表达式预期类型（在赋值右侧、  `return`  之后、作为方法形参等）。       仅在   Java   上下文中可用。     |
|   `fileName()`   |  返回当前文件的名称及其扩展程序。  |
|   `fileNameWithoutExtension()`   |  返回当前文件的名称，不含其扩展程序。  |
|   `filePath()`   |  返回当前文件的绝对路径。  |
|   `fileRelativePath()`   |  返回当前文件相对于当前项目的路径。 要检查给定文件的相对路径，请右键点击该文件并选择   复制引用  ，或按 `Ctrl+Alt+Shift+C` (Windows), `⌘ ⌥ ⇧ C` (macOS), `⌘ ⌥ ⇧ C` (IntelliJ IDEA Classic (macOS)), `⌘ ⌥ ⇧ C` (macOS System Shortcuts), `Ctrl+Alt+Shift+C` (XWin), `Ctrl+Alt+Shift+C` (GNOME), `Ctrl+Alt+Shift+C` (KDE), `Ctrl+Alt+Shift+C` (Emacs), `Ctrl+Alt+Shift+C` (Sublime Text), `⌘ ⌥ ⇧ C` (Sublime Text (macOS)), `Ctrl+Alt+Shift+C` (Visual Studio), `⌘ ⌥ ⇧ C` (Visual Studio (macOS)), `Ctrl+Alt+Shift+C` (NetBeans), `Ctrl+Alt+Shift+C` (Eclipse), `⌘ ⌥ ⇧ C` (Eclipse (macOS))。  |
|   `firstWord(<String>)`   |     返回作为参数传递的字符串的第一个单词。       例如，  `firstWord("one two three")`  返回  `one` 。     |
|   `functionParameters()`   |     返回模板展开所在的 Kotlin 函数／方法的形参。       仅在   Kotlin   上下文中可用。     |
|   `groovyScript(<String>, [arg, ...])`   |     执行作为字符串传入的 Groovy 脚本。       第一个实参是一个字符串，包含脚本文本或包含该脚本的文件路径。 函数／方法将其他可选实参作为  `_1` 、  `_2` 、  `_3` 、...、  `_n`  变量的值传递给脚本。 此外，您可以使用  `_editor`  变量从脚本内部访问当前编辑器。       以下示例显示了一个  `groovyScript()` 函数，用于将给定字符串（另一个变量  `$MyVar$` 的值）转换为大写字母：       ```GROOVY groovyScript("_1.toUpperCase()", MyVar)  ```      以下示例展示了一个  `groovyScript()`  函数／方法，它会将所选文本拆分为单词并以编号列表显示：       ```GROOVY groovyScript("def result = ''; _1.split().eachWithIndex { item, index -> result = result + index.next() + '. ' + item + System.lineSeparator() }; return result;", SELECTION)  ```      最后一个示例使用  `SELECTION`  预定义变量，这意味着必须选择文本并按 `Ctrl+Alt+T` (Windows), `⌘ ⌥ T` (macOS), `⌘ ⌥ T` (IntelliJ IDEA Classic (macOS)), `⌘ ⌥ T` (macOS System Shortcuts), `Ctrl+Alt+Shift+B` (XWin), `Ctrl+Alt+Shift+B` (GNOME), `Ctrl+Alt+Shift+B` (KDE), `Ctrl+Alt+T` (Emacs), `Ctrl+Alt+T` (Sublime Text), `⌘ ⌥ T` (Sublime Text (macOS)), `Ctrl+Alt+T` (Visual Studio), `Ctrl+Alt+T` (Visual Studio (macOS)), `Ctrl+Alt+T` (NetBeans), `Alt+Shift+Z` (Eclipse), `⌘ ⌥ Z` (Eclipse (macOS))（   用…包围  ）来应用它。     |
|   `guessElementType(<Collection>)`   |  返回存储在  `java.util.Collection`  中的元素的可能类型。 IntelliJ IDEA 会查找向集合添加元素或从集合中提取元素的编码，以定义这些元素的类型。  |
|   `iterableComponentType(<Iterable>)`   |     返回可迭代对象的类型，例如数组或集合。       仅在   Java   上下文中可用。     |
|   `iterableVariable()`   |     返回当前作用域中最近声明的可迭代对象（如数组或集合）。 如果当前作用域中有多个可迭代对象，还会显示一个列表供您选择。       预定义实时模板  `iter`  使用  `iterableVariable()`  函数／方法。       仅在   Java   上下文中可用。     |
|   `kotlinClassName()`   |     返回模板展开所在的 Kotlin 类的名称。       仅在   Kotlin   上下文中可用。     |
|   `kotlinFunctionName()`   |     返回模板展开所在的 Kotlin 函数／方法的名称。       仅在   Kotlin   上下文中可用。     |
|   `lineCommentStart()`   |  返回指示当前语言上下文中行注释起始的字符。  |
|   `lineNumber()`   |  返回当前行号。  |
|   `lowercaseAndDash(<String>)`   |  将字符串转换为小写并插入短横线作为分隔符。 例如，  `lowercaseAndDash("MyExampleName")`  和  `lowercaseAndDash("my example name")`  都返回  `my-example-name` 。  |
|   `methodName()`   |     返回模板展开的方法名称。       仅在   Java   上下文中可用。     |
|   `methodParameterTypes()`   |     返回模板展开所在方法的参数类型列表。       仅在   Java   上下文中可用。     |
|   `methodParameters()`   |     返回模板展开所在方法的形参名称列表。       仅在   Java   上下文中可用。     |
|   `methodReturnType()`   |     返回模板展开所在的当前方法的返回值类型。       仅在   Java   上下文中可用。     |
|   `qualifiedClassName()`   |     返回模板展开所在的当前类的完全限定名称。       仅在   Java   上下文中可用。     |
|   `regularExpression(<String>, <Pattern>, <Replacement>)`   |     在  `字符串`  中查找  `模式`  的所有出现位置，并将其替换为  `Replacement` 。 可以将模式指定为正则表达式，以查找字符串中与之匹配的所有内容。       例如，  `regularExpression(NAME, "a", "b")`  表达式会将  `$NAME$`  模板变量中的任何字母 "a" 替换为字母 "b"。 您可以在模式部分使用 regexp 字符类；例如，  `regularExpression(NAME, "[a-z]", "b")`  将替换变量中的任何字母。 如果希望  `\d`  或  `\w`  等模式被视为正则表达式字符类，必须转义斜杠，使模式看起来像  `"\\d"` 。     |
|   `rightSideType()`   |     将左侧变量声明为右侧表达式的类型。         迭代   组中的某些预定义模板使用  `rightSideType()`  函数／方法，以便为原始类型和泛型类型使用单个模板。       可与 [castToLeftSideType()](#castToLeftSideType) 进行比较。       仅在   Java   上下文中可用。     |
|   `snakeCase(<String>)`   |  将字符串转换为  snake_case 。 例如，  `snakeCase("fooBar")`  和  `snakeCase("foo bar")`  都返回  `foo_bar` 。  |
|   `spaceSeparated(<String>)`   |  返回以 Space 作为分隔符的指定字符串。 例如，  `spaceSeparated("fooBar")`  返回  `foo Bar` ，  `spaceSeparated("Foo_BAR")`  返回  `Foo BAR` 。  |
|   `spacesToUnderscores(<String>)`   |  将作为形参传入的字符串中的 Space 替换为下划线。 例如，  `spacesToUnderscores("foo bar BAZ")`  返回  `foo_bar_BAZ` 。  |
|   `substringBefore(<String>, <Delimeter>)`   |  返回到指定分隔符为止的子字符串。 这有助于移除测试文件名称中的扩展程序。 例如，如果在名称为  `component-test.js`  的文件中使用，  `substringBefore(fileName(),".")`  将返回  `component-test` 。  |
|   `subtypes(<String>)`   |     返回当前作用域中作为字符串传入的类型的子类型。       预定义  `lazy`  实时模板使用  `subtypes(typeOfVariable(VAR))`  函数／方法，利用其某个子类型对变量执行延迟初始化。       仅在   Java   上下文中可用。     |
|   `suggestFirstVariableName(<String>)`   |     返回在给定上下文中可能分配给作为参数传递的类型的所有变量。       这类似于 [variableOfType()](#variableOfType)，但不会建议  `true` 、  `false` 、  `this`  和  `超级` 。     |
|   `suggestIndexName()`   |     返回迭代中索引变量的建议名称，取自最常用的名称：  `i` 、  `j` 、  `k`  等（当前作用域中未使用的第一个名称）。         迭代   组中的某些预定义模板（  `fori` 、  `itar` 、  `ritar` ）使用  `suggestIndexName()`  函数／方法来建议合适的索引变量名称。     |
|   `suggestVariableName()`   |     根据引用变量命名规则的代码样式设置，基于变量类型及其初始化表达式建议变量名称。       例如，如果它是一个在迭代中保存元素的变量，IntelliJ IDEA 会考虑被迭代容器的名称来猜测最合理的名称。   迭代   组中的某些预定义模板（  `itar` 、  `itco` 、  `iten` ）使用  `suggestVariableName()`  函数／方法，为迭代元素建议合适的变量名称。     |
|   `time([format])`   |     返回当前系统时间。       默认情况下，如果没有形参，则返回当前系统格式的时间。 要使用其他格式，请按照 [SimpleDateFormat](https://docs.oracle.com/javase/7/docs/api/java/text/SimpleDateFormat.html) 规范提供形参。 例如，  `time("H:m z")`  返回的时间格式为  `13:10 UTC` 。     |
|   `typeOfVariable(<String>)`   |     返回传递为参数的变量类型。       仅在   Java   上下文中可用。     |
|   `typeParameterOf(VAR[,indexOrName])`   |     返回对象参数的类型（例如，集合元素的类型）。 它接受两个参数：        * `VAR` ：变量名称（可以是另一个实时模板变量）    * `indexOrName` ：形参的从 0 开始的索引，即要检索其类型的形参。 它也可以是类型变量的名称。 如果省略，则返回第一个形参的类型。      例如，  `typeParameterOf(NAME, "1")`  返回  `NAME`  变量的第二个参数的类型，  `typeParameterOf(NAME, "K")`  返回  `K`  变量的  `NAME`  参数的类型。       仅在   Java   上下文中可用。       另请参阅 Java  `itm`  实时模板，了解函数／方法实现的示例。     |
|   `underscoresToCamelCase(<String>)`   |  将带有下划线的字符串（如  snake_case ）转换为  camelCase 。 例如，  `underscoresToCamelCase(foo_bar_baz)`  和  `underscoresToCamelCase(FOO_BaR_baZ)`  都返回  `fooBarBaz` 。  |
|   `underscoresToSpaces(<String>)`   |  将字符串中的下划线转换为空格。 例如，  `underscoresToSpaces(foo_bar_baz)`  返回  `foo bar baz` ，  `underscoresToSpaces(FOO_BaR_baZ)`  返回  `FOO BaR baZ` 。  |
|   `user()`   |  返回当前用户的名称。  |
|   `variableOfType(<String>)`   |     返回所有可能分配给作为参数传递的类型的变量。 例如，  `variableOfType("double")` 、  `variableOfType("java.util.Vector")`  或  `variableOfType(methodReturnType())` 。       如果将空字符串  `""`  作为形参传入，函数／方法会建议所有变量，而不考虑其类型。       与 [suggestFirstVariableName()](#suggestFirstVariableName) 不同，此函数／方法还会返回标准表达式，例如  `true` 、  `false` 、  `this`  和  `Outer.this` 。     |

