实时模板变量
当您展开 实时模板 缩写时,其变量要么显示为可输入值的字段,要么被值替换。 这些值可能是您可以修改的默认值,或者是使用 函数计算得出的值。
要在模板中声明变量,请使用以下格式: $VAR$。
在表达式中,请使用不带开头和结尾的美元字符的变量名 $ ,例如 lowercaseAndDash(ComponentName)。
通过表达式定义每个变量,并在表达式求值失败时提供默认值。
此表达式可能包含以下结构:
双引号中的字符串常量
在实时模板中定义的其他变量的名称
预定义函数及其可能的参数
配置模板变量
预定义模板变量

CLion 支持以下无法修改的预定义 实时模板 变量:
$END$表示代码段完成时文本光标的位置,您不能再按 Tab 跳到下一个变量。$SELECTION$用于环绕模板,表示要包装的代码片段。 模板展开后,会按照模板中的指定方式包装所选文本。 例如,如果您在代码中选择EXAMPLE并通过指定的缩写或按下 Ctrl+Alt+T 并从列表中选择所需的模板来调用"$SELECTION$"模板,CLion 将如下所示将所选内容用双引号括起来:"EXAMPLE"。
在实时模板变量中使用的函数
以下函数可用于定义 实时模板 变量:
函数 | 描述 |
|---|---|
| 提供作用域基于 ![]() |
| 返回指示当前语言上下文中块注释结束的字符。 |
| 返回指示当前语言环境下块注释开始的字符。 |
| 将字符串转换为 camelCase。 例如, |
| 将字符串的首字母大写。 例如, |
| 将字符串的所有字母大写,并在各部分之间插入下划线。 例如, |
| 返回当前类的名称(展开模板的位置)。 对构造函数模板很有用。 仅在 Java 上下文中可用。 |
| 返回系统剪贴板的内容。 |
| 移除 |
| 返回当前语言环境中表示注释结束的字符。 对于带有行注释的语言,返回值为空。 |
| 返回当前语言上下文中表示注释开始的字符。 对于带有行注释的语言,返回值是行注释的起始,与 lineCommentStart() 相同。 |
| 在变量的位置调用 代码补全。 |
| 在变量的位置调用 智能类型补全。 |
| 返回所有作为参数传递给函数的字符串的拼接结果。 例如, |
| 返回当前系统日期。 默认情况下,没有参数时,它会以当前系统格式返回日期。 要使用不同的格式,请根据 SimpleDateFormat规范提供参数。 例如, |
| 返回表或视图的列列表。 上下文代码模板中使用了 |
| 返回表或视图的名称。 上下文代码模板中使用了 |
| 将字符串的首字母替换为相应的小写字母。 例如, |
| 返回模板扩展时建议的字符串列表。 例如, |
| 将特殊字符转义,以便结果可以在 Java 字符串中使用。 例如,它将制表符替换为 |
| 使用 |
| 返回作为此函数参数传递的对象的字符串格式说明符。 |
| 返回当前作用域中可用的集合和枚举的名称。 例如,请参阅 |
| 返回当前文件的名称及其扩展名。 |
| 返回当前文件的名称,但不包含其扩展名。 |
| 返回当前文件的绝对路径。 |
| 返回相对于当前项目的当前文件路径。 要检查某个给定文件的相对路径,右键点击并选择 复制引用 ,或按 Ctrl+Alt+Shift+C。 |
| 返回作为参数传递的字符串的第一个单词。 例如, |
| 返回指示当前语言环境中行注释开始的字符。 |
| 返回当前行号。 |
| 将字符串转换为小写并插入短横线作为分隔符。 例如, |
| 返回模板展开的方法名称。 仅在 Java 环境中可用。 |
| 返回包含成员函数的可见对象列表,这些函数列为参数。 |
| 返回当前 Python 函数的名称。 |
| 找到所有在 例如, |
| 声明左侧变量,其类型为右侧表达式的类型。 部分预定义模板在 迭代 组中使用 |
| 返回在向函数或方法添加参数时的参数详细信息。 |
| 将字符串转换为 snake_case。 例如, |
| 返回指定的字符串,并以空格作为分隔符。 例如, |
| 将传入参数中的空格替换为下划线。 例如, |
| 返回指定分隔符之前的子字符串。 这对于移除测试文件名中的扩展名很有帮助。 例如, |
| 返回一个建议的索引变量名称,其在迭代中使用最常见的名称: 一些在 迭代 组中预定义的模板( |
| 根据与变量命名规则相关的代码风格设置,基于变量类型及其初始化表达式建议变量名称。 例如,如果这是一个在迭代中保存元素的变量,CLion 会根据迭代容器的名称来猜测最合理的名称。 一些在 迭代 组中的预定义模板( |
| 返回当前系统时间。 默认情况下,无参数时,它会返回当前系统格式的时间。 要使用不同的格式,请根据 SimpleDateFormat规范提供参数。 例如, |
| 将带有下划线的字符串(如 snake_case )转换为 camelCase。 例如, |
| 将字符串中的下划线转换为空格。 例如, |
| 返回当前用户的名称。 |
| 返回作为循环中作用域表达式使用的对象的实例变量。 |
| 返回包含 |
| 返回所有可能分配给作为参数传递的类型的变量。 例如, . 如果您传递一个空字符串 |
示例
例如,让我们为一个简单的 C++ 类创建一个实时模板,使用变量和 函数。 模板将包含三个变量:
$ClassName$:新类的名称$Food$:三个可能的值列表:“meat”、“grass”和“honey”$AnimalName$:类名以小写字母开头,因此可以在句子中使用
创建一个带有变量的模板
按下 Ctrl+Alt+S 打开设置,然后选择 。
选择 C/C++ 组,点击
,然后选择 实时模板。
在 缩写 字段中,指定将用于扩展模板的字符。 例如,
animal。在 模板文本 字段中,粘贴以下模板:
class $ClassName$: public Animal { public: string Food = "$Food$"; void printFood () { std::cout << "The $AnimalName$ eats " << Food << std::endl; } };
点击 编辑变量(E)… 并在 编辑模板变量 对话框中配置变量:
$ClassName$保持不变,这意味着我们期望用户在应用此模板时输入一个值。$Food$:在 表达式 字段中,输入enum("meat","grass","honey")。 此功能允许用户应用此模板时选择一个预定义值。$AnimalName$:在 表达式 字段中,输入decapitalize(ClassName)。 此函数获取ClassName变量的值并将其首字母转换为小写。 选择 如果定义则跳过 因为我们不需要提示用户输入。

点击左下角的链接以定义或更改模板适用的语言上下文:

使用创建的模板
开始输入动态模板的名称(
animal在我们的示例中)。变量的值(在我们的示例中是类名),然后按 Tab 键跳到下一个变量。
使用键盘箭头键,选择
food字符串的一个值。


