IntelliCode 整行自动完成功能根据当前代码预测下一个代码区块,并呈现为灰色文本内联预测。 想想在键入电子邮件时看到的灰色文本自动完成,只不过此处用于代码。
此功能支持 Visual Studio 2022 及更高版本中的 C# 。
若要关闭文本预测,请禁用 IntelliCode 扩展。 从菜单中选择“ 扩展>管理扩展 ”,找到并选择 IntelliCode 扩展,然后选择“ 禁用”。
工作原理
IntelliCode 使用大规模转换器模型,该模型在来自 GitHub 的约 50 万个公共开源存储库上进行训练。 此模型基于对到目前为止你已编码内容的丰富知识储备,预测接下来你将输入的内容,包括:
- 变量名称和位置
- 你使用的库
- 附近代码中的函数
- IntelliSense 列表
此模型在您的本地计算机上运行,因此该功能可以在脱机和物理隔离环境中使用。 此功能支持 C# 。
两种模式
IntelliCode 以两种方式提供完成 - 一种是在用户键入内容时,第二种是用户在 IntelliSense 列表中选择了项时。
模式 1:键入时整行自动完成
用户在键入时,我们将显示整行的自动完成,可以通过按“Tab 接受”来接受。若要取消预测,可以使用 Escape(Esc)或 Delete(Del)键盘快捷键。
模式 2:选择 IntelliSense 项时的整行自动完成
如果用户选择了 IntelliSense 列表中的项,IntelliCode 将使用用户键入的内容 + 用户选择的内容作为提供预测的上下文。 在此示例中,将看到“要接受的选项卡”预测。 第一个选项卡接受 IntelliSense 列表中的选定项,第二个选项卡接受整行完成。 若要消除预测,可以使用 Escape (Esc) 或 Delete (Del) 键盘快捷方式。
接受或消除整行完成
默认情况下, Tab 键用于接受全行自动完成。 可以从工具>选项菜单中将默认的确认键更改为向右箭头>。
打开 “工具>选项 ”对话框,然后展开 “IntelliCode>高级 ”部分。 选中“在右箭头上应用整行完成”复选框,然后选择“确定”。
若要消除全行自动完成,请使用 Escape (Esc) 或 Delete (Del) 键盘快捷方式。
隐私
控制整行自动完成
可以使用编辑器右下角显示的小型紫色灯泡(在缩放控件旁)控制全线自动完成功能。
在 “工具>选项 ”窗格中,“ 所有设置>文本编辑器>代码完成>常规 ”部分提供了 “代码完成调用 ”选项。 此设置允许您将全行自动完成设置为编辑时自动与手动或手动。
“ 所有设置>文本编辑器>代码完成>首选项 ”部分提供了更多选项,包括:
在新行上显示代码补全:使用 Enter (或 Return)键输入新行时查看整行的自动代码补全。
在调试模式下显示代码完成:在调试代码时查看全行自动完成。
仅在暂时停止键入后显示代码完成:仅在暂停键入时显示整行代码自动补全。 如果发现全行自动完成在默认模式下分散注意力,你可能更喜欢此选项。
隐藏与代码完成和下一个编辑建议一起显示的提示栏:在调试时尽量减少干扰。
使用键盘快捷方式接受代码完成:将此选项设置为右箭头 > 键以接受全行自动完成,如 本文前面所述。
在 “工具>选项”对话框中,IntelliCode>常规部分提供了在编辑器中自动生成代码补全的选项。 此设置允许你打开或关闭全线自动完成。
IntelliCode>高级部分在“全线完成”组中提供了更多选项,包括:
在向右箭头上应用整行完成:使用向右键 > 接受全行自动完成,如 本文前面所述。
调试时禁用建议:在调试时尽量减少干扰。
在新行上显示内联完成:使用 Enter (或 Return)键输入新行时查看全行自动完成。
等待输入过程中暂停后才显示整行自动补全:仅在输入时暂停后显示整行自动补全。 如果发现全行自动完成在默认模式下分散注意力,你可能更喜欢此选项。
第一个设置显示代码行完成,允许你启用或禁用整行自动完成功能。
第二个设置:在显示整行自动完成之前等待用户键入暂停。启用该选项后,只有当用户暂停键入时,才会显示整行自动完成。 如果发现全行自动完成在默认模式下分散注意力,你可能更喜欢此选项。
第三个设置是“在新行中显示完成”,可以根据是否希望在输入新行时看到整行自动完成功能来选择打开或关闭,也就是按下Return或Enter键。
提供反馈
选择 Visual Studio 右上角的“反馈”图标以提交反馈票证。 (可选)可以将 IntelliCode 日志文件上传到反馈票证,以便向我们提供更多上下文。 请确保查看日志文件的内容,并解决你可能拥有的任何隐私问题。 与Microsoft共享的任何数据不用于提供支持帮助以外的任何目的。 可以在 %LOCALAPPDATA%\Temp\VSFeedbackIntelliCodeLogs 中找到日志。