JetBrains Rider 2025.2 Help

实时模板变量

当您展开 实时模板 缩写时,其变量要么显示为可输入值的字段,要么被值替换。 这些值可能是您可以修改的默认值,或者是使用 函数计算得出的值。

要在模板中声明变量,请使用以下格式: $VAR$

在表达式中,请使用不带开头和结尾的美元字符的变量名 $ ,例如 lowercaseAndDash(ComponentName)

通过表达式定义每个变量,并在表达式求值失败时提供默认值。

此表达式可能包含以下结构:

  • 双引号中的字符串常量

  • 在实时模板中定义的其他变量的名称

  • 预定义函数及其可能的参数

配置模板变量

  1. 设置/首选项 对话框(Ctrl+Alt+S )中,前往 编辑器 | 实时模板 | 其他语言

  2. 选择您想要配置变量的模板。

  3. 在模板文本中指定变量,然后点击 编辑变量(E)…

  4. 编辑模板变量 对话框中,您可以对每个变量执行以下操作:

    • 更改变量名。

    • 使用 预定义函数定义表达式。

    • 指定表达式评估失败时的默认值。 默认值应包含在双引号中。

    • 指定在表达式成功评估后,您是否希望在提示用户输入时跳过该变量。

预定义模板变量

JetBrains Rider 支持以下无法修改的预定义 实时模板 变量:

  • $END$ 表示代码段完成时文本光标的位置,您不能再按 Tab 跳到下一个变量。

  • $SELECTION$ 用于环绕模板,表示要包装的代码片段。 模板展开后,会按照模板中的指定方式包装所选文本。 例如,如果您在代码中选择 示例 并通过指定的缩写或按下 Ctrl+Alt+T 并从列表中选择所需的模板来调用 "$SELECTION$" 模板,JetBrains Rider 将如下所示将所选内容用双引号括起来: "示例"

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

以下函数可用于定义 实时模板 变量:

函数

描述

camelCase(<String>)

将字符串转换为 camelCase

例如, camelCase("my-text-file")camelCase("我的文本文件")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

完成

在变量的位置调用 代码补全

智能完成

在变量的位置调用 智能类型补全

concat(<String>, ...)

返回所有作为参数传递给函数的字符串的拼接结果。

例如, concat(date()," ",user()) 返回当前系统日期和用户名,中间用空格分隔。

date([format])

返回当前系统日期。

默认情况下,没有参数时,它会以当前系统格式返回日期。 要使用不同的格式,请根据 SimpleDateFormat规范提供参数。 例如, 日期("Y-MM-d, E, H:m") 返回的日期格式为 2020-02-27, Thu, 16:11

dbColumns()

返回表或视图的列列表。 上下文代码模板中使用了 dbColumns() (例如, 插入)。 您可以通过右键点击对象并选择 SQL 脚本 来访问上下文实时模板。

dbObjectName()

返回表或视图的名称。 上下文代码模板中使用了 dbObjectName() (例如, 顶部)。 您可以通过右键点击对象并选择 SQL 脚本 来访问上下文实时模板。

decapitalize(<String>)

将字符串的首字母替换为相应的小写字母。

例如, decapitalize("Name") 返回 名称

defaultReturnValues

如果表达式用于返回语句,则返回默认值。 如果表达式是错误类型,则使用 errorVariableName 参数。

enum(<String>, ...)

返回模板扩展时建议的字符串列表。

例如, enum("Foo","Bar","Baz") 显示了一个列表,您可以从中选择一个指定的字符串。

escapeString(<String>)

将特殊字符转义,以便结果可以在 Java 字符串中使用。

例如,它将制表符替换为 \t ,将换行符替换为 \n ,将反斜杠转义为 \\ ,引号替换为 \" ,等等。

预期类型

返回模板展开时表达式的预期类型(在赋值的右侧部分、 返回 之后、作为方法参数等等)。

仅在 Java 环境中可用。

文件名

返回当前文件的名称及其扩展名。

文件名无扩展名

返回当前文件的名称,但不包含其扩展名。

文件路径

返回当前文件的绝对路径。

文件相对路径

返回相对于当前项目的当前文件路径。 要检查某个给定文件的相对路径,右键点击并选择 复制引用 ,或按 Ctrl+Alt+Shift+C

firstWord(<String>)

返回作为参数传递的字符串的第一个单词。

例如, 首词("one two three") 返回 one

行号

返回当前行号。

lowercaseAndDash(<String>)

将字符串转换为小写并插入短横线作为分隔符。 例如, 小写加连字符("MyExampleName")lowercaseAndDash("my example name") 都返回 my-example-name

regularExpression(<String>, <Pattern>, <Replacement>)

找到所有在 模式 中的 字符串 并用 Replacement 替换它们。 您可以将模式指定为正则表达式,以在字符串中查找所有匹配项。

例如, 正则表达式(NAME, "a", "b") 表达式将模板变量 $NAME$ 中的任何字母 “a” 替换为字母 “b”。 您可以在模式部分使用 regexp 字符类;例如, 正则表达式(NAME, "[a-z]", "b") 将替换变量中的任何字母。 如果您希望模式(例如 \d\w )被视为正则表达式字符类,您必须对斜杠进行转义,以便您的模式看起来像 "\\d"

snakeCase(<String>)

将字符串转换为 snake_case。 例如, snakeCase("fooBar")snakeCase("foo bar") 都返回 foo_bar

spaceSeparated(<String>)

返回指定的字符串,并以空格作为分隔符。 例如, spaceSeparated("fooBar") 返回 foo Bar ,而 spaceSeparated("Foo_BAR") 返回 Foo BAR

spacesToUnderscores(<String>)

将传入参数中的空格替换为下划线。 例如, spacesToUnderscores("foo bar BAZ") 返回 foo_bar_BAZ

substringBefore(<String>, <Delimeter>)

返回指定分隔符之前的子字符串。 这对于移除测试文件名中的扩展名很有帮助。 例如, substringBefore(fileName(),".") 如果在一个名为 component-test.js 的文件中使用,将返回 component-test

时间([格式])

返回当前系统时间。

默认情况下,无参数时,它会返回当前系统格式的时间。 要使用不同的格式,请根据 SimpleDateFormat规范提供参数。 例如, time("H:m z") 返回的时间格式为 13:10 UTC

underscoresToCamelCase(<String>)

将带有下划线的字符串(如 snake_case )转换为 camelCase。 例如, underscoresToCamelCase(foo_bar_baz)underscoresToCamelCase(FOO_BaR_baZ) 都返回 fooBarBaz

underscoresToSpaces(<String>)

将字符串中的下划线转换为空格。 例如, underscoresToSpaces(foo_bar_baz) 返回 foo bar bazunderscoresToSpaces (FOO_BaR_baZ) 返回 FOO BaR baZ

用户()

返回当前用户的名称。

示例

让我们为 Angular 组件创建一个 ngcomp 模板,类似于默认的 a-component。 模板将包含 3 个变量:

  • 第一个变量 $ComponentName$ 将成为新组件类名称的占位符。

  • 第二个变量 $selector$ 将成为组件选择器的名称。

  • 第三个变量 $END$ 指定模板展开后光标最终应该位于的地方,并且 $ComponentName$ 和 $selector$ 占位符已被填充。

  1. 在编辑器中选择要用于模板的代码,按下 Ctrl+Shift+A ,并调用 保存为实时模板… 操作。

    选择代码保存为实时模板
  2. 输入将用于调用模板的缩写,例如 ngcomp ,并添加模板描述,例如 New Angular component

    添加模板缩写和描述
  3. 将变量添加到模板。

    1. SearchComponent 替换 $ComponentName$

    2. Component({}) 中添加 selector:'$selector$',

    3. $END$ 添加到 ngOnInit(){}

    添加变量
  4. 根据 Angular Style Guide ,选择器名称通常是组件名称的 dashed-case 版本,因此最好先指定组件名称。 然而,选择器在代码中是排在第一位的。

    为了解决这个问题,请点击 编辑变量(E)… ,并使用箭头图标调整变量的顺序。 现在 ComponentName 排在第一位,光标将在模板展开时首先跳转到它。

    更改变量顺序
  5. 如果我们只需指定类名,并通过类名转换自动填充选择器名称,那就太好了。 为此,请点击 表达式 字段,位于 selector 变量旁边,从列表中选择 lowercaseAndDash 函数,然后将 ComponentName 作为其参数输入。

  6. 可选:

    您可以选择 如果定义则跳过 ,位于 selector 旁边。 在这种情况下,编辑组件名称并按下 Enter 后,光标将移动到 $END$ 位置,而不是 $selector$

  7. 让我们看看我们新的模板如何运行:

最后修改日期: 2025年 9月 26日