代码完成
最后修改时间:2023 年 9 月 28 日配置:设置| 编辑| 一般| 代码完成
要自动完成,请启用“键入时显示建议”选项
基本完成:CtrlSpace
智能类型匹配完成:CtrlShiftSpace
要拒绝所有建议,请按。Esc
本节介绍了上下文感知代码完成的各种技术,可让您加快编码过程。
基本完成
基本代码补全可帮助您补全可见范围内的类、方法、字段和关键字的名称。
当您调用代码完成时,IntelliJ IDEA 会分析上下文并建议从当前插入符位置可访问的选项(建议还包括实时模板)。
提示
代码完成可用于自定义文件类型。但是,IntelliJ IDEA 无法识别此类文件的结构,并且会建议选项,无论它们是否适合当前上下文。
提示
基本完成也可用于非英语键盘布局。
如果基本代码完成应用于字段、参数或变量声明的一部分,IntelliJ IDEA 会根据项目类型建议可能的名称列表。
第二次调用基本代码完成会显示不可访问的类和成员(可以通过应用意图操作将其公开)。
当连续第三次调用时,IntelliJ IDEA 将在整个项目中查找类和接口名称的建议,而不管依赖关系如何。如果尚未导入必要的类,则会自动导入。
调用基本完成
开始输入名字。默认情况下,IntelliJ IDEA 在您键入时自动显示代码完成弹出窗口。
如果自动完成已禁用,请按或选择代码 | 代码完成 | 主菜单中的基本内容。CtrlSpace
如有必要,请按第二次(或按)。CtrlSpaceCtrlAltSpace
这显示了无法访问的类和成员以及静态字段和方法。
当第三次调用时,基本代码完成会将建议列表扩展到整个项目中的所有类,而不管依赖关系如何。
提示
Stream API 链中的完成功能可以识别类型转换,因此列表不仅包含基于现有调用的项目
filter(String.class::isInstance)
,还包含自动类型转换的建议。
类型匹配完成
智能类型匹配代码完成会过滤建议列表并仅显示适用于当前上下文的类型。
在可以确定适当类型的情况下,类型匹配完成非常有用:
在赋值语句的右侧部分
在变量初始值设定项中
在
return
声明中在方法调用的参数列表中
new
在对象声明中的关键字 之后在链式表达式中
调用类型匹配完成
开始打字。默认情况下,IntelliJ IDEA 在您键入时自动显示代码完成弹出窗口。如果自动完成已禁用,请按或选择代码 | 代码完成 | 主菜单中的类型匹配。CtrlShiftSpace
如有必要,请再按一次。这可以让您完成:CtrlShiftSpace
集合、列表和数组。IntelliJ IDEA 搜索具有相同组件类型的符号并建议对其进行转换。
静态方法调用或常量引用。IntelliJ IDEA 扫描静态方法和字段,并建议适合当前上下文的方法和字段。
笔记
链式表达式的补全仅适用于 Java,并且需要使用 IntelliJ IDEA 编译器(而不是 Gradle 编译器)构建项目。
报表完成
您可以使用语句完成来创建语法正确的代码结构。它会插入必要的语法元素(括号、大括号和分号),并使您能够开始键入下一条语句。
嬉皮完成
Hippie 补全是一个补全引擎,可以在可见范围内分析文本并根据当前上下文生成建议。它可以帮助您完成当前打开的任何文件中的任何单词。
将插入符号处的字符串扩展为现有单词
输入初始字符串并执行以下操作之一:
按或选择代码 | 代码完成 | 循环展开单词以搜索插入符号之前的匹配单词。Alt0/
按或选择代码 | 代码完成 | 循环展开单词(向后)可在插入符号之后和其他打开的文件中搜索匹配的单词。AltShift0/
第一个建议值出现,并且原型在源代码中突出显示。
接受建议,或按住该键并持续按下,直到找到所需的单词。Alt/
后缀代码补全
后缀代码补全可帮助您在编写代码时减少向后插入符跳转。您可以根据在点后键入的后缀、表达式的类型及其上下文,将已键入的表达式转换为不同的表达式。
启用并配置后缀完成
在“设置”对话框 ( ) 中,打开编辑器 | 一般| 后缀完成并选中启用后缀完成复选框。CtrlAlt0S
选择、、 或用于扩展后缀模板。TabSpaceEnter
启用/禁用所选语言的特定后缀模板。
转换带有后缀的语句
键入表达式,然后在点后键入后缀,例如,
.if:
爪哇Kotlinpublic class Foo { void m(boolean b) { b.if } }
fun foo(x: Boolean) { x.if }
初始表达式被一条语句包裹
if
:爪哇Kotlinpublic class Foo { void m(boolean b) { if (b) { } } }
fun foo(x: Boolean) { if (x) { } }
您可以在编辑器 |中禁用某些后缀补全模板。一般| Postfix IDE 设置完成页面 。CtrlAlt0S
您可以选择、、 或来展开后缀模板。TabSpaceEnter
您可以编辑预定义的后缀模板,例如,用较短的键替换长键,或扩展适用的表达式类型的列表。
提示
Postfix 完成选项显示为基本完成建议列表的一部分。要查看当前上下文中适用的后缀完成的完整列表,请按。Ctrl0J
创建自定义后缀模板
按打开 IDE 设置,然后选择编辑器 | 一般| 后缀完成。CtrlAlt0S
单击工具栏上的添加按钮 ( )。
在打开的弹出菜单中,选择您需要为其创建后缀模板的语言。
指定Key,它将调用模板的符号组合。
选择新模板将适用的表达式类型,并按以下格式键入目标表达式:
$EXPR$ <target_expression>
,例如$EXPR$ =!null
。要让 IntelliJ IDEA 在调用模板时自动转换最上面的适用表达式,请选中“应用到最上面的表达式”复选框。
否则,如果清除该复选框,IntelliJ IDEA 将在您调用模板时提示您选择表达式。
启用 “如果可能,使用静态导入”:选择此复选框以使 IntelliJ IDEA 添加静态导入语句而不是插入
MyUtils.methodName()
。
提示
Postfix 代码完成类似于实时模板,它允许您创建可在代码中的任何位置使用的自定义构造。
完成标签和属性
IntelliJ IDEA 自动补全许多文件类型中标签和属性的名称和值:
HTML/XHTML,包括CSS 类和JSX 内 HTML 标签的补全。
提示
如果启用 Emmet 支持,Emmet 模板也会在 HTML 和 XML 上下文中自动完成。
联合应用程序
/JSPX
普惠制
JSON。有关更多信息,请参阅编辑 package.json。
标签和属性名称的完成基于与文件关联的DTD 或架构。如果没有模式关联,IntelliJ IDEA 将使用文件内容(标签和属性名称及其值)来完成您的输入。
在XML/XSL和JSP/JSPX文件中,可以使用标记库和命名空间的补全。
机器学习辅助代码完成
IntelliJ IDEA 允许您根据其他用户在类似情况下所做的选择来确定完成建议的优先级。
ML 完成机制不会添加任何新元素,而是对从代码中检索到的元素进行排序。数据不暴露在任何地方;它是在当地收集的。
启用机器学习完成
按打开 IDE 设置并选择编辑器 | 一般| 代码完成。CtrlAlt0S
在机器学习辅助完成下,启用基于机器学习的排序完成建议选项,然后选择要使用 ML 完成的语言。
启用相关性标记
按打开 IDE 设置并选择编辑器 | 一般| 代码完成。CtrlAlt0S
启用以下选项:
在完成弹出窗口中标记位置更改:使用和图标来指示建议的相关性是增加还是减少,从而表明建议在建议列表中向上或向下移动。
在完成弹出窗口中标记最相关的项目:使用图标指示列表中最合适的建议。
建议列表如下所示,带有重新排序的图标和最相关的项目。
配置代码完成设置
要配置代码完成选项,请转到编辑器 | 一般| IDE 设置的 代码完成页面。CtrlAlt0S
您可以选择以下设置:
物品 | 描述 | |
---|---|---|
相符 | 选择是否希望在完成建议时考虑字母大小写。选择是否要匹配第一个字母或所有字母的大小写。 | |
自动插入单个建议 | 如果只有一项关于基本和智能类型匹配完成的建议,则自动完成代码。 | |
按字母顺序对建议排序 | 选择是否要按字母顺序对建议列表中的项目进行排序,而不是按相关性进行排序。 您可以随时通过单击建议列表并切换“按名称排序”选项来更改此行为。 | |
在您键入时显示建议 | 如果您希望自动调用建议列表,而无需显式调用完成,请选择此选项。默认情况下启用此选项。 | |
通过按空格、点或其他与上下文相关的键插入选定的建议 | 选择是否要通过键入取决于语言、上下文等的特定键来插入选定的建议。对于 Java,此类键包括 Space、Tab、[ 和 ]、( 和 ) 等。 | |
显示文档弹出窗口 | 选择自动显示建议列表中每个项目的弹出窗口,以及当前在查找列表中突出显示的类、方法或字段的文档。 在右侧的字段中,指定延迟(以毫秒为单位),之后应出现弹出窗口。 | |
适用时自动插入括号 | 如果启用此选项,当您完成函数/方法时,IntelliJ IDEA 会自动插入一对左括号和右括号。 清除该复选框可禁止自动插入括号。 如果您使用左括号 要使用左括号 有关详细信息,请参阅使用特定键插入建议。 | |
机器学习辅助完成 | ||
基于机器学习的排序补全建议 | 如果您想要使用机器学习模型将最合适的项目在建议列表中排名靠前,请选择此选项。选择您想要启用基于机器学习的建议的语言。 | |
在完成弹出窗口中标记位置更改 | 使用和图标来指示建议的相关性是增加还是减少,从而表明该建议在建议列表中向上或向下移动。 | |
在完成弹出窗口中标记最相关的项目 | 使用图标指示列表中最合适的建议。 | |
JavaScript | ||
仅基于类型的完成 | 默认情况下,IntelliJ IDEA 建议完成符号,无论其类型如何。通过这种方法,在复杂的情况下,列表会显示多个完成变体。 要使完成更加精确,请选择此选项。完成列表将在很大程度上取决于 IntelliJ IDEA 推理。因此,如果推断不佳,列表可能会保持为空。 | |
针对可空类型建议具有可选链接的项目 | 默认情况下,IntelliJ IDEA 建议使用可选链接运算符 (?)完成符号。清除此复选框可抑制此行为。 | |
扩展方法体完成覆盖 | 默认情况下,当您想要重写父类或接口中的方法并从完成建议列表中选择此方法时,IntelliJ IDEA 会自动添加参数、生成调用并添加类型信息(如果可能) 清除此复选框可禁止在完成期间自动生成用于覆盖的方法体。 | |
完成姓名 |
| |
参数信息 | ||
完成时显示参数名称提示 | 选择是否要显示参数值的提示。 | |
显示参数信息弹出窗口(以毫秒为单位) | 选择此复选框可让 IntelliJ IDEA 在编辑器中键入左括号或从建议列表中选择方法时自动显示包含所有可用方法签名的弹出窗口。 在右侧的文本字段中,指定弹出窗口出现后的延迟(以毫秒为单位)。 如果未选中此复选框,则用于显示参数信息。Ctrl0P | |
显示完整的方法签名 | 如果选中此复选框,参数信息将显示完整签名,包括方法名称和返回类型。 | |
SQL | ||
使用别名完成 JOIN | 在 JOIN 语句中为表创建别名。 | |
反转自动生成的 ON 子句中操作数的顺序 | 切换 ON 子句中的操作数。清除该复选框后,FROM 表将出现在 JOIN 条件中的第一个表中。 | |
完成表名时自动添加别名 | 为表名创建别名。 | |
在表名之后建议完整的别名 | 当您使用代码完成 ( ) 时,建议表名的别名。CtrlSpace | |
自定义别名(表) | 您可以添加表名称和要用于该表的别名。要添加表别名对,请单击添加别名按钮 ( )。 |
从完成中排除类或包
按打开 IDE 设置,然后选择编辑器 | 一般| 自动导入。CtrlAlt0S
在从导入和完成中排除下,添加要从完成中排除的类或包的名称。您在此处指定的类不会出现在建议列表中。
您还可以在编辑器中显示完成建议时选择它:按并选择从那里排除:AltEnter
完成提示和技巧
从完成弹出窗口中打开完成设置
您可以直接从完成弹出窗口快速访问代码完成设置。
单击完成弹出窗口中的图标,然后选择代码完成设置。
之后,编辑 | 一般| IDE 设置的 代码完成页面打开。CtrlAlt0S
缩小建议列表范围
您可以通过键入单词的任何部分(甚至是中间某个位置的字符)或在点分隔符后调用代码完成来缩小建议列表的范围。IntelliJ IDEA 将显示建议,其中包括您在任何位置输入的字符。
这使得没有必要使用通配符:
如果是CamelCase或Snake_case名称,请仅键入首字母。IntelliJ IDEA 自动识别并匹配首字母。
接受建议
您可以通过以下方式之一接受列表中的建议:
按或双击列表项将其插入到插入符号的左侧。Enter
按可替换插入符号右侧的字符。Tab
用于使当前代码构造在语法上正确(平衡括号、添加缺少的大括号和分号等)。CtrlShiftEnter
您还可以使用特定键插入选定的完成建议:转到编辑器| 一般| IDE 设置的 “代码完成”页面,然后选择“通过按空格、点或其他与上下文相关的键插入选定的建议”选项。这些键取决于语言、您的上下文等。对于 Java,此类键包括、、and 、and等。CtrlAlt0SSpace
Tab[
]
(
)
笔记
虽然此设置可以帮助您节省时间,但打开它可能会导致意外插入项目。
否定表达式
!从建议列表中选择表达式后,可以通过按 来否定 Java 中的表达式。结果,表达式将被否定:
如果您在代码完成设置页面中启用了通过按空格、点或其他上下文相关键插入所选建议选项,或者显式调用代码完成,或者显式更改建议列表中的选择,则可以通过这种方式否定表达式。
完成快捷键
您可以将以下实时模板快捷方式用于最常用的语句之一:
sout
: 印刷System.out.printIn()
soutm
:添加当前类和方法名称soutp
:添加方法参数名称和值soutv
:添加最后一个变量值soutc
:System.out::printIn
在需要消费者函数的地方插入方法引用
查看参考
查看代码层次结构
从建议列表中选择条目后,您可以查看 代码层次结构:
Ctrl0H- 查看类型层次结构
CtrlAlt0H- 查看调用层次结构。
CtrlShift0H- 查看方法层次结构。
观看此视频,了解有关 IntelliJ IDEA 中补全工作原理的更多信息:
故障排除
如果代码完成不起作用,可能是由于以下原因之一造成的:
省电模式已打开(文件 | 省电模式)。打开它可以消除后台操作(包括错误突出显示、即时检查和代码完成),从而最大限度地减少笔记本电脑的功耗。
没有为您的项目配置JDK 。
您的文件不驻留在内容根中,也不绑定到构建路径,因此它无法获取代码完成所需的类定义和资源。
包含您希望出现在完成建议列表中的类和方法的文件被标记为纯文本文件。
包含您希望出现在完成建议列表中的方法的外部库不会添加为依赖项或全局库。
如果收集完成选项所需的时间过长,代码完成弹出窗口可能不会自动显示。例如,如果计算机正忙于另一项任务。在这种情况下,您仍然可以通过热键手动激活完成弹出窗口Ctrl+Space。
感谢您的反馈意见!