配置路径:设置 | 编辑器 | 通用 | 代码自动完成

要启用自动完成,请勾选“当键入时显示建议”选项。

基本完成:Ctrl + 空格

智能类型匹配完成:Ctrl + Shift + 空格

要拒绝所有建议,请按Esc键。

本节介绍了上下文感知代码自动完成的各种技巧,可帮助您加快编码过程。

基本完成

基本代码完成可帮助您在可见范围内完成名称、类型和关键字。

当您调用代码完成时,CLion会分析上下文并建议从当前插入符位置可访问的选项(建议还包括Live 模板)。

代码完成适用于自定义文件类型。但是,CLion不识别此类文件的结构,并且无论当前上下文是否适合,都会建议选项。

基本完成也适用于非英语键盘布局。

如果将基本代码完成应用于字段、参数或变量声明的一部分,则CLion会根据项类型建议可能的名称列表。

调用基本完成

  • 默认情况下,当您输入时,CLion会自动显示代码完成弹出窗口。或者,您可以按Ctrl + 空格或从主菜单中选择代码 | 代码完成 | 基本。
    1.png

类型匹配完成

智能类型匹配代码完成会过滤建议列表,并仅显示适用于当前上下文的类型。

调用类型匹配完成

  • 要调用类型匹配完成,请开始输入并按Ctrl + Shift + 空格,或从主菜单中选择代码 | 代码完成 | 类型匹配。
    2.png

语句完成

通过使用语句完成,您可以创建语法正确的代码结构,它会插入必要的语法元素(括号、大括号和分号),让您可以开始输入下一条语句。要调用语句完成,请开始输入代码结构,然后按Ctrl + Shift + Enter。

完整语句支持以下语言结构:

  • 类型和类型成员:类、命名空间和枚举。
  • 语句:if/elsewhiledoforswitch/casetry/catch

完成函数声明

  • 开始输入函数声明,然后在左括号后按Ctrl + Shift + Enter。
在使用“完成语句”之前在使用“完成语句”之后
void myFunc(/*插入符*/void myFunc();/*插入符*/

完成代码结构

  • 开始输入代码结构,然后按Ctrl + Shift + Enter。

CLion会自动完成构造,并添加所需的标点符号。插入符号会放置在下一个编辑位置。

用例在使用“完成语句”之前在使用“完成语句”之后
类声明class NewClass /*插入符*/class NewClass { /*插入符*/ };
switch 子句switch/*插入符*/switch (/*插入符*/) {}
switch (i /*插入符*/) {}switch (i) { /*插入符*/ }
while 语句while/*插入符*/while (/*插入符*/) {}
while (n > 0/*插入符*/) {}while (n > 0) { /*插入符*/ }
if 语句if /*插入符*/if (/*插入符*/) {}
if (n > 0/*插入符*/) {}if (n > 0) { /*插入符*/ }
for 语句for /*插入符*/for (/*插入符*/) {}
for (int i = 0; i < 10; ++i/*插入符*/) {}for (int i = 0; < 10; ++i) { /*插入符*/ }
Try-catch 语句try /*插入符*/try { /*插入符*/ }
catch /*插入符*/catch (/*插入符*/) { }
catch (const std::exception/*插入符*/) {}catch (const std::exception) { /*插入符*/ }

Hippie 自动完成

Hippie 自动完成是一种完成引擎,它会分析可见范围内的文本,并从当前上下文中生成建议。它可以帮助您从当前打开的任何文件中完成任何单词。

将插入符处的字符串扩展为现有单词

  1. 输入初始字符串,然后执行以下操作之一:

    • 按Alt + 0/,或选择代码 | 代码完成 | 循环展开单词,在插入符前搜索匹配的单词。
    • 按Alt + Shift + 0/,或选择代码 | 代码完成 | 循环展开单词(向后),在插入符后以及其他已打开的文件中搜索匹配的单词。
    • 第一个建议值会出现,并且原型会在源代码中突出显示。
      3.png
  2. 接受建议,或按住Alt键,然后不断按/,直到找到所需的单词。

后缀代码自动完成

后缀代码完成可帮助您在编写代码时减少向后的插入符跳转。您可以根据在点号之后键入的后缀、表达式类型和上下文,将已键入的表达式转换为不同的表达式。

在CLion中,后缀代码完成适用于C/C++、Python、Rust、JavaScript、TypeScript 和 SQL。

对于C++,后缀完成对于使用C++风格的转换、make_shared/make_unique、各种循环和 begin/end 习惯特别有用。

启用和配置后缀完成

  • 在设置对话框中(Ctrl + Alt + S),打开 编辑器 | 通用 | 后缀完成,并选择启用后缀完成复选框。
  • 选择Tab、Space或Enter用于展开后缀模板。
  • 为所选语言启用/禁用特定的后缀模板。
    4.png

使用后缀转换语句

  • 输入一个表达式,然后在点号后输入一个后缀,例如 .if:

    void myfunc (int arg) {
        arg.if
    }

初始表达式会被包装在一个 if 语句中:

void myfunc (int arg) {
    if (arg)
}

后缀完成选项会显示在基本完成建议列表中:

5.png

您可以编辑预定义的后缀模板,例如,将长键替换为较短的键,或扩展适用的表达式类型列表。

目前尚不支持编辑和创建自定义的C/C++后缀模板。

编辑后缀模板名称

  1. 按Ctrl + Alt + S打开IDE设置,然后选择 编辑器 | 通用 | 后缀完成。
  2. 在树中双击模板名称,并根据需要进行编辑:
    6.png

algorithmFunctionfreeFunction 模板名称无法编辑。

创建自定义后缀模板(JavaScript、TypeScript、SQL、Rust)

  1. 按Ctrl + Alt + S打开IDE设置,然后选择 编辑器 | 通用 | 后缀完成。
  2. 在工具栏上单击添加按钮(添加按钮)。
  3. 指定一个由符号组合组成的键,用于调用模板。
  4. 选择新模板适用于哪些表达式类型,并以以下格式输入目标表达式:$EXPR$ <目标表达式>,例如,$EXPR$ =!null

机器学习辅助代码自动完成

CLion允许您根据其他用户在类似情况下的选择优先显示完成建议。

机器学习完成机制不会添加任何新元素,但会对从代码中检索的元素进行排序。数据不会在任何地方公开,它是在本地收集的。

启用机器学习完成

  1. 按Ctrl + Alt + S打开IDE设置,然后选择 编辑器 | 通用 | 代码自动完成。
  2. 在机器学习辅助完成下,启用基于机器学习的排序完成建议选项,并选择要使用机器学习完成的语言。
    7.png

启用相关标记

  1. 按下Ctrl + Alt + S以打开IDE设置,然后选择 编辑器 | 通用 | 代码自动完成。
  2. 启用以下选项:
    8.png

    • 标记完成弹出窗口中的位置更改:使用 机器学习排序向上机器学习排序向下 图标指示建议的相关性是否增加或减少,从而建议已上移或下移。
    • 在完成弹出窗口中标记最相关的项:使用 ML相关建议 图标指示建议列表中最合适的建议。

带有标记的建议列表如下所示,其中标记重新排序和最相关的项。
9.png

代码完成设置

要配置代码完成选项,转到IDE设置的 编辑器 | 通用 | 代码自动完成 页面,快捷键Ctrl + Alt + S。

您可以选择以下设置:

项目描述
匹配大小写选择是否要考虑完成建议的大小写。选择是否要为第一个字母或所有字母匹配大小写。
自动插入单个建议的情况选择是否要在基本和/或智能类型匹配完成中自动完成代码,如果只有一个建议。
按字母顺序排序建议列表选择是否要按字母顺序而不是按相关性对建议列表中的项目进行排序。您可以随时通过单击建议列表中的 应用操作更多 并切换“按名称排序”选项来更改此行为。
在键入时显示建议选择是否要自动调用建议列表,而不必显式调用完成。 默认情况下启用此选项。
在适当的情况下通过按空格、点或其他上下文相关键插入选定的建议选择是否要通过键入特定的键来插入所选的建议,这取决于语言、上下文等。
显示文档弹出窗口的位置选择是否要自动为建议列表中的每个项目显示一个弹出窗口,其中显示当前在查找列表中突出显示的类、方法或字段的文档。在右侧的字段中,指定弹出窗口出现的延迟时间(以毫秒为单位)。
在适用时自动插入括号如果启用此选项,则在完成函数/方法时,CLion会自动插入一对打开和关闭括号。取消选中该复选框以阻止自动插入括号。如果您使用开括号 ( 代替 Enter 键应用从完成列表中选择的项目,则不管该选项是打开还是关闭,括号都会自动插入。 要在开括号 ( 代替 Enter 键应用从完成列表中选择的项目,请打开设置对话框(Ctrl + Alt + S),转到 编辑器 > 通用 > 代码自动完成,并选择“通过按空格、点或其他上下文相关键插入选定的建议”复选框。
机器学习辅助完成
基于机器学习对完成建议进行排序选择是否要利用机器学习模型,以便在建议列表中将最合适的项目排名更高。选择要为其启用基于机器学习的建议的语言。
标记完成弹出窗口中的位置更改使用 机器学习排序向上机器学习排序向下 图标指示建议的相关性是否增加或减少,从而建议已上移或下移。
在完成弹出窗口中标记最相关的项使用 ML相关建议 图标指示建议列表中最合适的建议。
JavaScript
仅基于类型的完成默认情况下,CLion会为符号提供完成建议,而不考虑其类型。使用此方法,对于复杂情况,列表会显示多个完成变体。为了使完成更精确,请选择此选项。完成列表将强烈依赖于CLion的推断。因此,在推断不足的情况下,列表可能为空。
为可为空类型提供可选链接的建议项默认情况下,CLion会为带有可选链接运算符(?)的符号提供完成建议。取消选中此复选框以阻止此行为。
在覆盖项的完成中展开方法主体默认情况下,当您要覆盖来自父类或接口的方法,并从完成建议列表中选择此方法时,CLion会自动添加参数,生成 super() 调用,并添加类型信息(如果可能)。取消选中此复选框以阻止在完成过程中为覆盖项自动生成方法主体。
名称的完成建议变量和参数名称:默认情况下,复选框未选中。选择后,CLion将在声明新变量和参数时为其提供名称建议。这些建议基于项目中定义的类、类型和接口的名称,您正在使用的库以及标准API中定义的名称。建议为类字段提供名称默认情况下关闭该选项。为建议的参数名称添加类型注释:选择此复选框以为每个完成建议提供有关其类型的信息。此复选框仅在选择“建议变量和参数名称”复选框时可用。
参数信息
在特定的毫秒数内显示参数信息弹出窗口选择此复选框后,CLion会在编辑器中键入开括号时自动显示一个弹出窗口,其中显示所有可用的方法签名,或者在建议列表中选择一个方法。在右侧的文本字段中,指定弹出窗口出现后的延迟时间(以毫秒为单位)。如果未选中此复选框,请使用Ctrl + 0,然后按P来显示参数信息。
显示完整的方法签名如果选择此复选框,则参数信息将显示完整的签名,包括方法名和返回类型。
SQL
在JOIN完成中使用别名为JOIN语句中的表创建别名。10.png
在自动生成的ON子句中反转操作数的顺序在ON子句中切换操作数。当复选框未选中时,FROM表在JOIN条件中排在第一位。11.png
当完成表名时自动添加别名为表名创建别名。12.png
在表名后的完成中建议别名当使用代码完成(Ctrl + 空格)时,为表名建议一个别名。13.png
自定义别名(表格)您可以添加表名和要用于此表的别名。要添加表别名对,请单击添加别名按钮(添加别名按钮)。

完成技巧和技巧

从完成弹出窗口打开完成设置

您可以直接从完成弹出窗口访问代码完成设置。

  • 单击完成弹出窗口中的 应用操作更多 图标,然后选择“代码完成设置”。
    14.png

此后,IDE设置的 编辑器 | 通用 | 代码自动完成 页面将打开,快捷键Ctrl + Alt + S。

缩小建议列表

  • 您可以通过输入单词的任何部分(甚至是中间某处的字符)或在点分隔符 . 之后调用代码完成来缩小建议列表。CLion将显示包含您在任何位置输入的字符的建议。

    • 这使得使用通配符变得不必要:
      15.png

对于 CamelCase 或 snake_case 名称,只需输入初始字母。CLion会自动识别和匹配初始字母。

接受建议

您可以以以下方式之一从列表中接受建议:

  • 按下Enter键或双击列表项以将其插入到插入点的左侧。
  • 按下Tab键以替换插入点右侧的字符。
  • 使用Ctrl + Shift + Enter将当前代码构造语法上正确(平衡括号、添加丢失的大括号和分号等)。

您还可以使用特定的键插入所选的完成建议:转到IDE设置的 编辑器 | 通用 | 代码自动完成 页面,然后选择“通过按空格、点或其他上下文相关键插入选定的建议”选项。这些键取决于语言、上下文等。

虽然此设置可以帮助您节省时间,但打开它可能会导致项目被意外插入。

查看引用

  • 您可以在建议列表中选择条目后,按下Ctrl + Shift + 0,以使用以下功能:
    16.png
  • 您可以在建议列表中选择条目后,按下Ctrl + 0,然后按Q,以使用快速文档视图:
    17.png

查看代码层次结构

在您从建议列表中选择条目后,您可以查看代码层次结构:

  • Ctrl + 0,然后按H - 查看类型层次结构
  • Ctrl + Alt + 0,然后按H - 查看调用层次结构。

故障排除

如果代码自动完成无法正常工作,可能是以下原因之一:

  • 开启了电源节能模式(文件 | 电源节能模式)。启用此模式可以最大程度地减少笔记本电脑的功耗,通过消除背景操作(包括错误高亮、即时检查和代码完成)。
  • 您的文件不在内容根目录中,因此无法获取所需的类定义和代码完成所需的资源。
  • 包含您希望出现在完成中的符号的文件已被排除在索引之外。
  • 如果获取完成选项花费的时间太长,可能无法自动显示代码完成弹出窗口。例如,如果计算机正忙于其他任务。在这种情况下,您仍然可以通过Ctrl + 空格热键手动激活完成弹出窗口。

标签: clion破解, clion破解教程, clion教程, clion基础教程, clion高级教程, clion核心教程, clion免费激活码, clion免费注册码, clion注册码在线生成, clion激活