Skip to content

插件功能概览

VS Code 提供了多种可以使用插件来扩展它的功能的方法。插件开发的工作有时候会因为找不到正确的 Contribution 配置项或是 VS Code API 而变得特别困难。这篇文档将插件功能划分为如下几类:

  • 一些你的插件可能会用到的功能
  • 为这些功能链接到各自详细的页面
  • 一些插件的创意

然而,我们也对扩展进行了限制,以确保VS代码的稳定性和性能。例如,扩展无法访问VS Code UI的DOM。

公共功能

公共功能 是你在任何插件中都能用到的核心功能。

这些功能大致包含:

  • 注册命令、配置、键位绑定、右键菜单。
  • 存储工作区或全局数据。
  • 显示提示信息。
  • 使用输入提示帮助用户进行输入。
  • 打开文件选择窗口来让用户打开文件或打开文件夹。
  • 使用进度 API 来示意一个长时间运行的活动。

主题

主题 决定了 VS Code 的外观,包含编辑器中的代码颜色以及 VS Code 用户界面的颜色。如果你想要让 VS Code 显示炫酷的编码界面,或者是显示一个只有黑白灰的极简的工作区,那么你会需要主题的。

开发建议

  • 改变源代码的颜色。
  • 改变 VS Code 用户界面的颜色。
  • 将其它编辑器的主题移植到 VS Code。
  • 添加定制的文件图标。

声明式语言功能

声明式语言功能 为编程语言提供了基础的文本编辑支持,例如括号匹配、自动缩进和语法高亮。这是用声明的方式来实现的,不需要写任何的代码。对于一些高级的语言特性,例如代码智能补全和代码调试,你可以查阅 变成语言特性

开发建议

  • 将公共的 JavaScript 代码块导入插件。
  • 将一个新的编程语言告知 VS Code。
  • 添加或替换一个编程语言的语法。
  • 使用语法注入功能扩展一个已存在的语法。
  • 将其它编辑器的语法移植到 VS Code 中。

编程语言特性

编程语言特性 为 VS Code 添加了丰富的支持,例如鼠标悬停提示、转到定义、诊断报错、智能补全、CodeLens 功能等。这些语言特性通过 vscode.languages.* 接口提供。一个插件可以直接使用这些 API,或者是编写一个语言服务,通过 语言服务库 将其适配到 VS Code 中。

虽然我们提供了一整个 语言特性的清单,以及它们的使用方法,但你不必循规蹈矩,没有任何事情可以阻拦你的创意。举个例子,CodeLens 和鼠标悬停提示是提供行内提示的绝佳方法,而诊断错误可以用于突出显示拼写或编码风格的错误。

开发建议

  • 鼠标悬停显示一个 API 的用法。
  • 使用诊断功能来报告代码的拼写错误或是代码风格问题。
  • 为 HTML 注册一个新的格式化程序。
  • 提供丰富的、具有上下文感知的代码补全功能。
  • 添加目录结构、编辑器顶部的面包屑和大纲支持。

工作区插件

工作区插件 扩展了 VS Code 的工作区的用户界面。你可以为文件浏览器添加一个新的右键菜单项,或者是使用 VS Code 的 树形结构视图 接口来创建一个自定义的文件浏览器。如果你的插件需要高度定制用户界面,你可以使用标准的 HTML、CSS、JavaScript,通过 Webview 接口 来创建你的文档或者是用户界面。

开发建议

  • 为文件浏览器添加自定义的右键菜单。
  • 在侧边栏创建一个可交互的树形视图。
  • 定义一个活动条视图。
  • 在状态栏中显示信息。
  • 使用 WebView 接口渲染一个自定义页面。
  • 提供代码版本控制能力(SVN、Git)。

调试

调试插件可以链接到 VS Code 的调试界面,来增强 VS Code 的调试功能。

开发建议

  • 将一个调试插件指定为一个语言的支持插件。
  • 为调试配置属性提供智能感知和鼠标悬停提示。
  • 提供调试配置的代码片段。

另一方面,VS Code 同样提供了一系列的 调试插件 API,使用这些 API 可以在 VS Code 调试器上实现任何与调试相关的功能,来实现用户的自动化调试体验。

开发建议

  • 根据动态创建的调试配置启动调试会话。
  • 跟踪调试会话的生命周期。
  • 用编程的方式创建和管理断点。

用户体验指南

请参考 用户体验指南,这有助于你的插件更适配 VS Code 的用户界面。同样你也可以学习到更适配 VS Code 用户界面和工作流的最佳实践。

限制

我们同样对插件做了一些限制,以下是具体的限制以及目的。

不支持 DOM 操作

插件没有任何修改 VS Code 用户界面的权限,你不可以通过插件来修改 VS Code 的用户界面的任何 CSS 和 HTML。

在 VS Code 的不断迭代中,我们不断尝试优化底层 web 技术的应用,来为用户提供一个高可用性、高响应性的编辑器。随着技术的发展,我们将不断提升对 DOM 的使用程度。为了确保插件不会干扰 VS Code 的稳定性,同样为了确保我们可以在不破坏现有插件的情况下继续改进 VS Code 对 DOM 的应用,我们将插件放在插件宿主中运行,并阻止插件直接访问 DOM。

不支持自定义 CSS

自定义的 CSS 会作用于 DOM 结构。我们认为这些应该是内部提供的,因此并没有文档。出于为了能更好地扩展、重构或是改进 VS Code,我们保留了修改用户界面的能力。任何自定义的 CSS 都可能破坏现有的界面样式,导致破坏用户体验。

VS Code 想要提供一个精心设计的,支持用户界面定制的插件 API。API 应该拥有它的文档,并带有对应的工具和示例,同样需要在未来发布的 VS Code 版本中保证稳定性。

评论区
评论区空空如也
发送评论
名字
0 / 20
邮箱
0 / 100
评论内容
0 / 140
由于是非实名评论,所以不提供删除功能。如果你需要删除你发送的评论,或者是其他人的评论对你造成了困扰,请 发邮件给我 。同时评论区会使用 AI + 人工的方式进行审核,以达到合规要求。

© thebestxt.cc
辽ICP备16009524号-8
本站所有文章版权所有,转载请注明出处