CLion 2025.2 Help

实时模板变量

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

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

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

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

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

  • 双引号中的字符串常量

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

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

配置模板变量

  1. 设置 对话框(Ctrl+Alt+S )中,转到 编辑器 | 实时模板

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

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

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

    • 更改变量名。

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

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

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

    实时模板变量

预定义模板变量

实时模板变量的函数

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

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

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

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

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

函数

描述

autoTypeForRangedForLoop()

提供作用域基于 for 循环的类型推导变体:

循环迭代器的自动类型推导

blockCommentEnd()

返回指示当前语言上下文中块注释结束的字符。

blockCommentStart()

返回指示当前语言环境下块注释开始的字符。

camelCase(<String>)

将字符串转换为 camelCase

例如, camelCase("my-text-file")camelCase("my text file")camelCase("my_text_file") 都返回 myTextFile

capitalize(<String>)

将字符串的首字母大写。

例如, capitalize("name") 返回 Name。 或者您可以将其合并到 capitalize(camelCase("my awesome class")) 以获取 MyAwesomeClass

capitalizeAndUnderscore(<String>)

将字符串的所有字母大写,并在各部分之间插入下划线。

例如, capitalizeAndUnderscore("FooBar")capitalizeAndUnderscore("foo bar")capitalizeAndUnderscore("foo-bar") 都返回 FOO_BAR

className()

返回当前类的名称(展开模板的位置)。 对构造函数模板很有用。

仅在 Java 上下文中可用。

clipboard()

返回系统剪贴板的内容。

collectionElementName()

移除 _list 和复数结尾 (s)。

commentEnd()

返回当前语言环境中表示注释结束的字符。 对于带有行注释的语言,返回值为空。

commentStart()

返回当前语言上下文中表示注释开始的字符。 对于带有行注释的语言,返回值是行注释的起始,与 lineCommentStart() 相同。

complete()

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

completeSmart()

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

concat(<String>, ...)

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

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

date([format])

返回当前系统日期。

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

dbColumns()

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

dbObjectName()

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

decapitalize(<String>)

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

例如, decapitalize("Name") 返回 name

enum(<String>, ...)

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

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

escapeString(<String>)

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

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

executionContext()

使用 sel_getName(_cmd) 函数返回当前方法的名称。

expressionFormatCode()

返回作为此函数参数传递的对象的字符串格式说明符。

fastEnumeration()

返回当前作用域中可用的集合和枚举的名称。

例如,请参阅 each 实时模板在 Objective-C 组中的示例。 此函数仅适用于 Objective-C。

fileName()

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

fileNameWithoutExtension()

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

filePath()

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

fileRelativePath()

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

firstWord(<String>)

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

例如, firstWord("one two three") 返回 one

lineCommentStart()

返回指示当前语言环境中行注释开始的字符。

lineNumber()

返回当前行号。

lowercaseAndDash(<String>)

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

methodName()

返回模板展开的方法名称。

仅在 Java 环境中可用。

objectWithFunctions(sFunctionName1, sFunctionName2,...)

返回包含成员函数的可见对象列表,这些函数列为参数。

pyFunctionName()

返回当前 Python 函数的名称。

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

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

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

rightSideType()

声明左侧变量,其类型为右侧表达式的类型。

部分预定义模板在 迭代 组中使用 rightSideType() 功能,以便为原始类型和泛型类型提供单一模板。

showParameterInfo()

返回在向函数或方法添加参数时的参数详细信息。

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

suggestIndexName()

返回一个建议的索引变量名称,其在迭代中使用最常见的名称: ijk 等(第一个不在当前作用域中使用的名称)。

一些在 迭代 组中预定义的模板(foriitarritar )使用 suggestIndexName() 函数来建议一个合适的索引变量名称。

suggestVariableName()

根据与变量命名规则相关的代码风格设置,基于变量类型及其初始化表达式建议变量名称。

例如,如果这是一个在迭代中保存元素的变量,CLion 会根据迭代容器的名称来猜测最合理的名称。 一些在 迭代 组中的预定义模板(itaritcoiten )使用 suggestVariableName() 函数为迭代元素建议一个合适的变量名称。

time([format])

返回当前系统时间。

默认情况下,无参数时,它会返回当前系统格式的时间。 要使用不同的格式,请根据 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

user()

返回当前用户的名称。

variableForIteration()

返回作为循环中作用域表达式使用的对象的实例变量。

variableForRangeBasedIteration()

返回包含 beginend 函数的对象实例变量。

variableOfType(<String>)

返回所有可能分配给作为参数传递的类型的变量。 例如, .

如果您传递一个空字符串 "" 作为参数,函数会建议所有变量,而不考虑它们的类型。

示例

例如,让我们为一个简单的 C++ 类创建一个实时模板,使用变量和 函数。 模板将包含三个变量:

  • $ClassName$ :新类的名称

  • $Food$ :三个可能的值列表:“meat”、“grass”和“honey”

  • $AnimalName$ :类名以小写字母开头,因此可以在句子中使用

创建一个带有变量的模板

  1. 按下 Ctrl+Alt+S 打开设置,然后选择 Editor | 实时模板

  2. 选择 C/C++ 组,点击 添加按钮 ,然后选择 实时模板

  3. 缩写 字段中,指定将用于扩展模板的字符。 例如, animal

  4. 模板文本 字段中,粘贴以下模板:

    class $ClassName$: public Animal { public: string Food = "$Food$"; void printFood () { std::cout << "The $AnimalName$ eats " << Food << std::endl; } };
    实时模板示例
  5. 点击 编辑变量(E)… 并在 编辑模板变量 对话框中配置变量:

    • $ClassName$ 保持不变,这意味着我们期望用户在应用此模板时输入一个值。

    • $Food$ :在 表达式 字段中,输入 enum("meat","grass","honey")。 此功能允许用户应用此模板时选择一个预定义值。

    • $AnimalName$ :在 表达式 字段中,输入 decapitalize(ClassName)。 此函数获取 ClassName 变量的值并将其首字母转换为小写。 选择 如果定义则跳过 因为我们不需要提示用户输入。

    编辑模板变量
  6. 点击左下角的链接以定义或更改模板适用的语言上下文:

    实时模板上下文

使用创建的模板

  1. 开始输入动态模板的名称(animal 在我们的示例中)。

  2. 变量的值(在我们的示例中是类名),然后按 Tab 键跳到下一个变量。

  3. 使用键盘箭头键,选择 food 字符串的一个值。

实时模板用法
最后修改日期: 2025年 9月 26日