智能感知
智能感知 (IntelliSense) 是各种代码编辑功能的通用术语,包括:代码补全、参数信息、快速信息和成员列表。智能感知功能有时也被称为“代码补全”、“内容辅助”和“代码提示”。
您的编程语言的智能感知
Visual Studio Code 智能感知功能开箱即用地支持 JavaScript、TypeScript、JSON、HTML、CSS、SCSS 和 Less。VS Code 支持对任何编程语言进行基于单词的补全,但也可以通过安装语言扩展来配置更丰富的智能感知功能。
以下是 Visual Studio Marketplace 中最受欢迎的语言扩展。选择下面的扩展磁贴以阅读描述和评论,决定哪个扩展最适合您。
智能感知功能
VS Code 智能感知功能由语言服务提供支持。语言服务根据语言语义和对源代码的分析提供智能代码补全。如果语言服务知道可能的补全,智能感知建议将在您键入时弹出。如果您继续键入字符,成员列表(变量、方法等)将进行过滤,只包含您键入的字符所对应的成员。按 Tab 或 Enter 键将插入所选成员。
您可以在任何编辑器窗口中通过键入 ⌃Space(Windows、Linux Ctrl+Space)或键入触发字符(例如 JavaScript 中的点字符 (.))来触发智能感知。
建议控件支持驼峰式大小写过滤,这意味着您可以键入方法名称中大写字母的组合来限制建议。例如,“cra”会显示“createApplication”。
如果您愿意,可以在键入时关闭智能感知。请参阅自定义智能感知,了解如何禁用或自定义 VS Code 的智能感知功能。
由语言服务提供,您可以通过按 ⌃Space(Windows、Linux Ctrl+Space)或选择 >
图标来查看每个方法的快速信息。该方法附带的文档会在侧面展开。展开的文档会一直可用,并在您浏览列表时更新。您可以通过再次按 ⌃Space(Windows、Linux Ctrl+Space)或选择关闭图标来关闭它。
选择方法后,将为您提供参数信息。
在适用的情况下,语言服务会在快速信息和方法签名中显示底层类型。在之前的屏幕截图中,您可以看到多个 any
类型。由于 JavaScript 是动态的,不需要或不强制类型,因此 any
表示变量可以是任何类型。
补全类型
以下屏幕截图中的 JavaScript 代码展示了智能感知补全。智能感知提供了推断的建议以及项目的全局标识符。推断的符号首先显示,然后是全局标识符(由 abc
单词图标表示)。
VS Code 智能感知提供不同类型的补全,包括语言服务器建议、代码片段和简单的基于单词的文本补全。
图标 | 名称 | 符号类型 |
---|---|---|
方法和函数 | method , function , constructor |
|
变量 | 变量 |
|
字段 | 字段 |
|
类型参数 | typeParameter |
|
常量 | 常量 |
|
类 | 类 |
|
接口 | 接口 |
|
结构 | 结构 |
|
事件 | 事件 |
|
运算符 | 运算符 |
|
模块 | 模块 |
|
属性 | 属性 |
|
枚举 | 枚举 |
|
枚举成员 | enumMember |
|
引用 | 引用 |
|
关键字 | 关键字 |
|
文件 | 文件 |
|
文件夹 | 文件夹 |
|
颜色 | 颜色 |
|
单位 | 单位 |
|
代码片段前缀 | 代码片段 |
|
单词 | 文本 |
自定义智能感知
您可以在设置和键盘快捷方式中自定义智能感知体验。
设置
以下显示的设置是默认设置。您可以在设置编辑器中更改这些设置(⌘,(Windows、Linux Ctrl+,))。
{
// Controls if quick suggestions should show up while typing
"editor.quickSuggestions": {
"other": true,
"comments": false,
"strings": false
},
// Controls whether suggestions should be accepted on commit characters. For example, in JavaScript, the semi-colon (`;`) can be a commit character that accepts a suggestion and types that character.
"editor.acceptSuggestionOnCommitCharacter": true,
// Controls if suggestions should be accepted on 'Enter' - in addition to 'Tab'. Helps to avoid ambiguity between inserting new lines or accepting suggestions. The value 'smart' means only accept a suggestion with Enter when it makes a textual change
"editor.acceptSuggestionOnEnter": "on",
// Controls the delay in ms after which quick suggestions will show up.
"editor.quickSuggestionsDelay": 10,
// Controls if suggestions should automatically show up when typing trigger characters
"editor.suggestOnTriggerCharacters": true,
// Controls if pressing tab inserts the best suggestion and if tab cycles through other suggestions
"editor.tabCompletion": "off",
// Controls whether sorting favours words that appear close to the cursor
"editor.suggest.localityBonus": true,
// Controls how suggestions are pre-selected when showing the suggest list
"editor.suggestSelection": "first",
// Enable word based suggestions
"editor.wordBasedSuggestions": "matchingDocuments",
// Enable parameter hints
"editor.parameterHints.enabled": true,
}
Tab 键补全
编辑器支持Tab 键补全,它会在按 Tab 时插入最匹配的补全。这无论建议控件是否显示都有效。此外,在插入建议后再次按 Tab 会插入下一个最佳建议。
默认情况下,Tab 键补全处于禁用状态。使用 editor.tabCompletion 设置来启用它。这些值是:
off
-(默认)Tab 键补全已禁用。on
- Tab 键补全对所有建议都已启用,并且重复调用会插入下一个最佳建议。onlySnippets
- Tab 键补全只插入与当前行前缀匹配的静态代码片段。
局部性奖励
建议的排序取决于扩展信息以及它们与您当前键入的单词的匹配程度。此外,您可以使用 editor.suggest.localityBonus 设置,要求编辑器提升更靠近光标位置的建议。
在之前的屏幕截图中,您可以看到 count
、context
和 colocated
是根据它们出现的范围(循环、函数、文件)进行排序的。
建议选择
默认情况下,VS Code 会预先选择建议列表中的第一个建议。如果您想要不同的行为,例如始终选择建议列表中最近使用的项目,您可以使用 editor.suggestSelection 设置。
可用的 editor.suggestSelection 值包括:
first
-(默认)始终选择列表中的第一个项目。recentlyUsed
- 除非前缀(键入以选择)选择了不同的项目,否则将选择之前使用的项目。recentlyUsedByPrefix
- 根据以前完成这些建议的前缀来选择项目。
选择最近使用的项目非常有用,因为您可以快速多次插入相同的补全。
“键入以选择”意味着当前前缀(大约是光标左侧的文本)用于过滤和排序建议。当这种情况发生并且其结果与 recentlyUsed
的结果不同时,它将获得优先权。
当使用最后一个选项 recentlyUsedByPrefix
时,VS Code 会记住针对特定前缀(部分文本)选择了哪个项目。例如,如果您键入 co
然后选择了 console
,下次您键入 co
时,建议 console
将会被预选。这允许您快速将各种前缀映射到不同的建议,例如 co
-> console
和 con
-> const
。
建议中的代码片段
默认情况下,VS Code 在一个控件中显示代码片段和补全建议。您可以使用 editor.snippetSuggestions 设置修改此行为。要从建议控件中删除代码片段,请将值设置为 "none"
。如果您想查看代码片段,可以指定其相对于建议的顺序:在顶部 ("top"
)、在底部 ("bottom"
) 或按字母顺序内联显示 ("inline"
)。默认值为 "inline"
。
键盘快捷方式
此处显示的键盘快捷方式是默认键盘快捷方式。要分配不同的键盘快捷方式,请使用键盘快捷方式编辑器(⌘K ⌘S(Windows、Linux Ctrl+K Ctrl+S))。
命令 | 按键绑定 |
---|---|
editor.action.triggerSuggest |
⌃Space(Windows、Linux Ctrl+Space) |
toggleSuggestionDetails |
⌃Space(Windows、Linux Ctrl+Space) |
toggleSuggestionFocus |
⌃⌥Space(Windows、Linux Ctrl+Alt+Space) |
还有许多与智能感知相关的键盘快捷方式。打开默认键盘快捷方式(文件 > 首选项 > 键盘快捷方式)并搜索“建议”。
通过 AI 增强补全
GitHub Copilot 在您在编辑器中键入时提供编码建议。您还可以向 Copilot 提出与编码相关的问题,例如如何更好地编写代码、如何修复错误或别人的代码如何工作。
入门
-
通过我们的Copilot 快速入门了解关键功能。
如果您还没有 Copilot 订阅,可以通过注册Copilot 免费计划免费使用 Copilot,并获得每月限制的补全和聊天交互次数。
故障排除
如果您发现智能感知停止工作,可能是语言服务未运行。尝试重启 VS Code,这应该能解决问题。如果您在安装语言扩展后仍然缺少智能感知功能,请在该语言扩展的存储库中提交问题。
有关配置和故障排除 JavaScript 智能感知的信息,请参阅JavaScript 文档。
特定的语言扩展可能不支持所有 VS Code 智能感知功能。请查阅扩展的 README 文件以了解支持哪些功能。如果您认为语言扩展存在问题,通常可以通过 VS Code Marketplace 找到该扩展的问题存储库。导航到扩展的详细信息页面,然后选择支持链接。
后续步骤
智能感知只是 VS Code 众多强大功能之一。继续阅读以了解更多信息
- 调试 - 了解如何为您的应用程序设置调试。
- 创建语言扩展 - 了解如何创建为新编程语言添加智能感知的扩展。
- VS Code 中的 GitHub Copilot - 了解如何使用 AI 与 GitHub Copilot 增强您的编码。
常见问题
为什么我没有收到任何建议?
这可能由多种原因引起。首先,尝试重启 VS Code。如果问题仍然存在,请查阅语言扩展的文档。有关 JavaScript 特定故障排除,请参阅JavaScript 语言主题。
为什么我没有看到方法和变量建议?
此问题是由于 JavaScript 中缺少类型声明(typings)文件引起的。大多数常见的 JavaScript 库都附带声明文件或有可用的类型声明文件。
请确保为您正在使用的库安装相应的 npm 或 yarn 包。在使用 JavaScript 一文中了解有关智能感知的更多信息。对于其他语言,请查阅扩展的文档。