智能感知

IntelliSense 是各种代码编辑功能的总称,包括:代码完成、参数信息、快速信息和成员列表。IntelliSense 功能有时也有其他名称,例如“代码完成”、“内容辅助”和“代码提示”。

智能感知演示

适用于您的编程语言的 IntelliSense

Visual Studio Code IntelliSense 为 JavaScript、TypeScript、JSON、HTML、CSS、SCSS 和 Less 提供了开箱即用的功能。VS Code 支持任何编程语言的基于单词的补全,但也可以通过安装语言扩展来配置为具有更丰富的 IntelliSense。

以下是Marketplace中最流行的语言扩展。选择下面的扩展程序图块以阅读说明和评论,以决定哪个扩展程序最适合您。

智能感知功能

VS Code IntelliSense 功能由语言服务提供支持。语言服务根据语言语义和源代码分析提供智能代码补全。如果语言服务知道可能的补全,则 IntelliSense 建议将在您键入时弹出。如果您继续键入字符,则成员列表(变量、方法等)将被过滤为仅包含包含您键入的字符的成员。按T​​abEnter将插入选定的成员。

您可以在任何编辑器窗口中通过键入⌃Space(Windows、Linux Ctrl+Space或键入触发字符(例如JavaScript 中的点字符 ( . ))来触发 IntelliSense。

json 包中的智能感知

提示:建议小部件支持驼峰命名法过滤,这意味着您可以键入方法名称中的大写字母来限制建议。例如,“cra”将快速调出“createApplication”。

如果您愿意,可以在键入时关闭 IntelliSense。请参阅下面的自定义 IntelliSense,了解如何禁用或自定义 VS Code 的 IntelliSense 功能。

正如语言服务所提供的,您可以通过按⌃Space(Windows、Linux Ctrl+Space或单击信息图标来查看每种方法的快速信息。该方法的随附文档现在将扩展到侧面。扩展的文档将保持不变,并将在您浏览列表时更新。您可以通过再次按⌃Space(Windows、Linux Ctrl+Space或单击关闭图标来关闭它。

快速信息

选择方法后,您将获得参数信息

参数信息

如果适用,语言服务将在快速信息和方法签名中显示底层类型。在上图中,您可以看到几种any类型。由于 JavaScript 是动态的,不需要或强制类型,any因此建议变量可以是任何类型。

竣工类型

下面的 JavaScript 代码说明了 IntelliSense 完成。IntelliSense 提供推断的建议和项目的全局标识符。首先显示推断的符号,然后是全局标识符(由 Word 图标显示)。

智能感知图标

VS Code IntelliSense 提供不同类型的补全,包括语言服务器建议、片段和基于简单单词的文本补全。

图标 姓名 符号类型
method icon 方法和功能 method, function,constructor
variable icon 变量 variable
field icon 领域 field
type parameter 类型参数 typeParameter
constant 常数 constant
class 课程 class
interface 接口 interface
structure 结构 struct
event 活动 event
operator 运营商 operator
module 模块 module
property 特性和属性 property
enumeration icon 值和枚举 value,enum
reference 参考 reference
keyword 关键词 keyword
file 文件 file
folder 文件夹 folder
color 颜色 color
unit 单元 unit
a square with ellipses forming the bottom show snippet prefix 片段前缀 snippet
a square with letters abc word completion text

定制 IntelliSense

您可以在设置和键绑定中自定义您的 IntelliSense 体验。

设置

下面显示的设置是默认设置。settings.json您可以按照用户和工作区设置中的说明更改文件中的这些设置。

{
    // 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": true,

    // Enable parameter hints
    "editor.parameterHints.enabled": true,
}

制表符补全

编辑器支持“制表符补全”,按下Tab时会插入最佳匹配的补全。无论建议小部件是否显示,这都有效。此外,在插入建议后按Tab 键将插入下一个最佳建议。

制表符补全

默认情况下,制表符补全功能处于禁用状态。使用该editor.tabCompletion设置来启用它。这些值存在:

  • off-(默认)制表符补全已禁用。
  • on- 对所有建议启用制表符补全,并重复调用插入下一个最佳建议。
  • onlySnippets- 制表符补全仅插入前缀与当前行前缀匹配的静态片段。

地域红利

建议的排序取决于扩展信息以及它们与您当前键入的单词的匹配程度。此外,您可以使用该设置要求编辑器增强显示更靠近光标位置的建议editor.suggest.localityBonus

按地区排序

在上图中,您可以看到countcontext、 和colocated根据它们出现的范围(循环、函数、文件)进行排序。

建议选择

默认情况下,VS Code 会预先选择建议列表中的第一个建议。如果您想要不同的行为,例如始终选择建议列表中最近使用的项目,则可以使用该editor.suggestSelection设置。

可用editor.suggestSelection值为:

  • first-(默认)始终选择顶部列表项。
  • recentlyUsed- 除非前缀(要选择的类型)选择不同的项目,否则将选择先前使用的项目。
  • recentlyUsedByPrefix- 根据已完成这些建议的先前前缀选择项目。

选择最近使用的项目非常有用,因为您可以快速插入相同的完成多次。

“键入选择”意味着当前前缀(大致是光标左侧的文本)用于过滤和排序建议。当发生这种情况并且其结果与 的结果不同时recentlyUsed,它将被优先考虑。

当使用最后一个选项 时,recentlyUsedByPrefixVS Code 会记住为特定前缀(部分文本)选择的项目。例如,如果您键入co然后选择console,则下次键入 时,将预先选择co该建议。console这使您可以快速将各种前缀映射到不同的建议,例如co->consolecon-> const

建议中的片段

默认情况下,VS Code 在一个小部件中显示片段和完成建议。您可以通过设置来控制行为editor.snippetSuggestions。要从建议小部件中删除片段,请将值设置为"none"。如果您想查看片段,您可以指定相对于建议的顺序;位于顶部 ( "top")、位于底部 ( "bottom") 或按字母顺序内嵌 ( "inline")。默认为"inline".

键绑定

下面显示的键绑定是默认的键绑定。keybindings.json您可以按照键绑定中的说明在文件中更改这些内容。

注意:还有更多与 IntelliSense 相关的键绑定。打开默认键盘快捷键文件>首选项>键盘快捷键)并搜索“建议”。

[
  {
    "key": "ctrl+space",
    "command": "editor.action.triggerSuggest",
    "when": "editorHasCompletionItemProvider && editorTextFocus && !editorReadonly"
  },
  {
    "key": "ctrl+space",
    "command": "toggleSuggestionDetails",
    "when": "editorTextFocus && suggestWidgetVisible"
  },
  {
    "key": "ctrl+alt+space",
    "command": "toggleSuggestionFocus",
    "when": "editorTextFocus && suggestWidgetVisible"
  }
]

通过人工智能提高完成率

在 VS Code 中,您可以使用人工智能 (AI) 增强编码,例如对代码行或整个函数的建议、快速文档创建以及帮助创建与代码相关的工件(例如测试)。

GitHub Copilot是一款基于 AI 的代码完成工具,可帮助您更快、更智能地编写代码。您可以使用VS Code 中的GitHub Copilot 扩展来生成代码,或从它生成的代码中学习。

VS Code Marketplace 中的 GitHub Copilot 扩展

您可以在Copilot 文档中了解有关如何开始使用 Copilot 的更多信息。

故障排除

如果您发现 IntelliSense 已停止工作,则语言服务可能未运行。尝试重新启动 VS Code,这应该可以解决问题。如果安装语言扩展后仍然缺少 IntelliSense 功能,请在语言扩展的存储库中提出问题。

提示:有关 JavaScript IntelliSense 的配置和故障排除,请参阅JavaScript 文档

特定语言扩展可能不支持所有 VS Code IntelliSense 功能。查看扩展的自述文件以了解支持的内容。如果您认为语言扩展存在问题,通常可以通过VS Code Marketplace找到扩展的问题存储库。导航到扩展程序的详细信息页面并选择支持链接。

下一步

IntelliSense 只是 VS Code 的强大功能之一。请继续阅读以了解更多信息:

  • JavaScript - 充分利用 JavaScript 开发,包括配置 IntelliSense。
  • Node.js - 请参阅 Node.js 演练中的 IntelliSense 实际操作示例。
  • 调试- 了解如何为您的应用程序设置调试。
  • 创建语言扩展- 了解如何创建为新编程语言添加 IntelliSense 的扩展。
  • VS Code 中的 GitHub Copilot - 了解如何将 AI 与 GitHub Copilot 结合使用来增强您的编码。

常见问题

为什么我没有得到任何建议?

IntelliSense 不起作用的图像

这可能是由多种原因引起的。首先,尝试重新启动 VS Code。如果问题仍然存在,请查阅语言扩展的文档。有关 JavaScript 特定的故障排除,请参阅JavaScript 语言主题

为什么我看不到方法和变量建议?

IntelliSense 图像未显示任何有用的建议

此问题是由于 JavaScript 中缺少类型声明(类型)文件引起的。您可以使用TypeSearch站点检查特定库的类型声明文件包是否可用。JavaScript 语言主题中有关于此问题的更多信息。对于其他语言,请参阅扩展程序的文档。