2021 年 11 月(版本 1.63)
更新 1.63.1:此更新解决了这些安全问题。
更新 1.63.2:此更新解决了这些问题。
下载:Windows:x64 Arm64 | Mac:通用 Intel 硅 | Linux:deb rpm tarball Arm snap
欢迎使用 Visual Studio Code 的 2021 年 11 月版本。此版本包含许多更新,我们希望您会喜欢,其中一些主要亮点包括
- 安装前预览主题 - 试用颜色主题,无需安装。
- 配置问题导航顺序 - 按严重程度或文件位置转到下一个错误或警告。
- 在录屏模式下显示命令 - 显示命令名称以及键盘快捷键。
- 笔记本改进 - 调整 Markdown 字体大小,更好的文件和 URL 链接支持。
- 不可见 Unicode 高亮显示 - 高亮显示不可见或易混淆的 Unicode 字符。
- TypeScript 方法补全 - 快速填写接口并覆盖方法。
- 预发布扩展 - 早日试用扩展的新功能和修复。
- 新的 Java 欢迎体验 - 帮助您在 VS Code 中配置和了解 Java。
- 适用于 vscode.dev 的更多扩展 - 查看适用于 Web 的 VS Code 的最新添加。
- 在 SSH 服务器上的容器中工作 - 新的远程 - SSH **在容器中重新打开** 命令。
如果您想在线阅读这些发行说明,请访问 更新,位于 code.visualstudio.com 上。
观看亮点本版本的新功能,在 VS Code 团队的发行会上。您可以在我们的 YouTube 频道上找到该事件的录制。
内部人员:想尽快尝试新功能吗?您可以下载夜间内部人员构建并尽快尝试最新更新。
工作台
在安装之前预览主题
您现在可以在安装之前预览市场中提供的主题。从颜色主题下拉菜单(⌘K ⌘T(Windows、Linux Ctrl+K Ctrl+T)),选择 **浏览其他颜色主题** 以列出市场主题。当您浏览下拉菜单时,VS Code UI 将预览颜色主题。
按主题条目上的 Enter 键安装扩展。
配置问题导航顺序
您现在可以定义 **转到下一个问题**(⌥F8(Windows、Linux Alt+F8))和 **转到上一个问题**(⇧⌥F8(Windows、Linux Shift+Alt+F8))导航的顺序。在以前的版本中,导航顺序基于严重程度,首先转到错误,然后是警告,然后是其余部分。新的 **问题:排序顺序**(problems.sortOrder
)设置允许您按其severity
或position
导航问题。当使用 "problems.sortOrder": "position"
时,第 5 行的警告将在第 13 行的错误之前显示,等等。
多种语言特定编辑器设置
您现在可以为多种语言配置语言特定的编辑器设置。以下示例显示了如何在 settings.json
文件中为 javascript
和 typescript
语言一起自定义设置
"[javascript][typescript]": {
"editor.maxTokenizationLineLength": 2500
}
自动 2x2 编辑器网格
真正的 2x2 网格编辑器布局只能使用 **视图:网格编辑器布局(2x2)** 命令实现。现在,您可以通过手动拆分编辑器直到达到 2x2 网格来获得相同的布局,网格将自动锁定到真正的 2x2 布局中。
列表中更好的 Escape 处理
在列表和树上按 Escape 键现在将在清除之前将选择缩小到单个元素。
在 Web 上启用查找
当 VS Code 在浏览器中运行时(下面的示例中为 github.dev),查找控件现在在 Web 视图中受支持
由于当前浏览器 API 的限制,查找的行为与桌面上的行为略有不同。例如,在 Web 上,VS Code 只能突出显示当前查找结果。在桌面上,所有结果都会在当前文件中突出显示。
录屏模式显示命令名称
您现在可以选择在录屏模式下显示命令名称,因为您是通过键盘快捷键触发它们。使用 **录屏模式:键盘快捷键格式**(screencastMode.keyboardShortcutsFormat
)设置配置此行为。
预发布扩展
VS Code 现在支持预发布版本的扩展,因此您可以选择安装它们并试用扩展的最新尖端功能。VS Code 在扩展 **安装** 下拉菜单中显示额外的 **安装预发布版本** 选项,用于安装预发布版本。
主题:GitHub 浅色主题
安装后,指示器将清楚地表明您是否正在使用扩展的预发布版本
主题:GitHub 浅色主题
如果您已安装扩展的预发布版本,则可以轻松切换到它
主题:GitHub 浅色主题
更新的查找操作
搜索视图中的查找操作现在使用与编辑器中查找操作相同的样式
源代码管理
忽略快速差异中的修剪空格
您现在可以配置在左窗格中显示的 SCM 快速差异功能以忽略修剪空格,使用 scm.diffDecorationsIgnoreTrimWhitespace
设置。
笔记本
调整笔记本中的字体大小
新的 notebook.markup.fontSize
设置允许您控制笔记本 Markdown 内容的字体大小。此设置的默认值为当前编辑器字体大小的 120%。
Markdown 单元格中的语法高亮
VS Code 现在支持带围栏的代码块在 Markdown 单元格中的语法高亮
笔记本中的文件链接
笔记本中的 Markdown 现在可以链接到当前工作区中的其他文件
以 /
开头的链接将相对于工作区根目录解析。以 ./
开头或以文件名开头的链接将相对于当前笔记本解析。
笔记本中的裸 http(s) 链接
此外,包含 http
或 https
的 Markdown 文本现在会自动转换为链接
这与其他笔记本渲染器(例如 JupyterLab)的行为一致。
笔记本工具栏标签的动态可见性
笔记本工具栏可以决定操作的标签是否应根据编辑器组的宽度可见,方法是将 notebook.globalToolbarShowLabel
设置为 dynamic
。它会首先隐藏来自最右侧操作组的标签,然后隐藏左侧的标签。如果编辑器组在隐藏所有标签后仍然太窄,则操作将被移动到溢出菜单中。
notebook.globalToolbarShowLabel
的其他值现在为 always
和 never
。
编辑器
Unicode 高亮显示
源代码中所有不常见的不可见字符现在默认情况下都会被高亮显示
此外,可能会与 ASCII 字符混淆的字符也会被高亮显示
您可以阅读"The Invisible JavaScript Backdoor" 博客文章或这篇剑桥大学文章,了解如何在 Unicode 欺骗攻击中使用不可见或易混淆的 Unicode 字符。
请注意,此功能无法检测所有可能的 Unicode 欺骗攻击,因为这取决于您的字体和区域设置。此外,对歧义字符的检测是启发式的。为了安全起见,应使用 VS Code 的工作区信任 受限模式 来查看源代码,因为在不受信任的工作区中,所有非 ASCII 字符都会被突出显示。
可以将设置 editor.unicodeHighlight.invisibleCharacters
、editor.unicodeHighlight.ambiguousCharacters
或 editor.unicodeHighlight.nonBasicASCII
设置为 false
以禁用相应的功能。
可以使用以下设置将单个字符排除在突出显示之外,以及将注释或文本中的字符排除在突出显示之外。
editor.unicodeHighlight.allowedCharacters
- 不应突出显示的特定字符列表。editor.unicodeHighlight.includeComments
- 启用在注释中突出显示字符。
此外,默认情况下不会突出显示 Markdown 文档。
多个悬停提供者
当文档有多个悬停提供者时,悬停现在将在其中一个提供者返回结果后立即显示,并在其他提供者返回结果时更新。
之前 | 之后 |
---|---|
任务
automationProfile 设置
旧的设置 terminal.integrated.automationShell.*
已被弃用,并且添加了新的 terminal.integrated.automationProfile.*
设置。这允许在指定用于任务的终端的属性方面有更大的自由度,包括 shell、图标、颜色和 shell 参数。
gulpfile.ts 支持
内置的 gulp 扩展现在支持从 gulpfile.ts
文件中检测任务。
NPM 脚本视图改进
NPM 脚本视图显示了有关脚本的更多详细信息。
还添加了一个新设置 npm.scriptExplorerExclude
,它允许您指定要从 NPM 脚本视图中排除的脚本。
语言
TypeScript 4.5
VS Code 现在附带 TypeScript 4.5。此更新带来了许多新的语言功能,以及工具改进和错误修复。
您可以在 TypeScript 博客 上了解有关 TypeScript 4.5 的更多信息。
方法签名完成
方法签名完成允许您快速覆盖方法并实现接口方法。使用此功能,当您在类体中时,对方法的建议(例如来自超类的建议)会在接受时插入方法的整个签名。
如果您正在编写 TypeScript,接受建议还会为签名中引用的类型添加所有必要的导入。
此功能需要工作区中的 TypeScript 4.5,并且可以使用 typescript.suggest.classMemberSnippets.enabled
和 javascript.suggest.classMemberSnippets.enabled
启用/禁用。
JSX 属性完成
在 JavaScript 和 TypeScript 中完成 JSX 属性时,VS Code 现在会自动插入属性值。
可以使用 javascript.preferences.jsxAttributeCompletionStyle
和 typescript.preferences.jsxAttributeCompletionStyle
配置这些完成的行为。
可能的设置值是
auto
- 根据类型推断属性样式。字符串使用attr=""
,而其他类型使用attr={}
。braces
- 始终使用大括号。None
- 只完成属性名称。
删除旧版 TS 版本的语义突出显示
此更新删除了在工作区中使用 TypeScript 4.1 或更旧版本时对语义突出显示的支持。
TypeScript 4.2 添加了对语义突出显示的原生支持。在旧版本中,语义突出显示是作为 VS Code 提供的 TypeScript 语言插件实现的。删除插件减少了要维护和发布的代码量。
Markdown 预览自定义编辑器
您现在可以使用 **使用其他方式重新打开** 命令将 Markdown 文件显示为 Markdown 预览,而不是文本。
与 **Markdown:打开预览** 命令不同,**使用其他方式重新打开** 不会打开新的编辑器选项卡,而是更改已打开编辑器选项卡的显示方式。再次使用 **使用其他方式重新打开** 将文件切换回默认文本视图。
此外,您现在可以配置 VS Code 以使用 workbench.editorAssociations
设置自动将任何 Markdown 文件打开为预览。
"workbench.editorAssociations": {
"*.md": "vscode.markdown.preview.editor"
}
Markdown 预览增量更新
内置的 Markdown 预览现在在您键入时更智能地更新自身。预览不再为每次更新替换整个 Markdown 预览文档,而是使用 DOM diffing 仅替换预览文档中已更改的元素。这减少了键入时有时会出现的抖动。
JSON 语言指示器
在 JSON 文件中编辑时,现在有一个语言指示器 {}
,用于显示内容是否已针对一个或多个 JSON 模式进行了验证。将鼠标悬停在指示器上会显示验证状态以及用于打开模式的链接。
JSON 模式缓存
来自模式存储库 (json.schemastore.org) 的 JSON 模式现在被缓存到本地。这节省了网络带宽,并在脱机工作时有所帮助。
Emmet 删除标签命令改进
**Emmet:删除标签** 命令现在会删除带有标签的行,以及适用的多余空行,前提是标签在删除之前位于它自己的行上。现在,当要在删除的标签之间有空行时,它还会正确地重新缩进剩余的行。
适用于 Web 的 VS Code
Azure Repos
在本里程碑中,我们与 Azure DevOps 工程团队合作,为 Azure Repos 中的 **文件** 中心添加了一个新的键盘快捷键。在 **文件** 中心浏览存储库时,您可以按 .
在 https://vscode.dev 中打开存储库。
我们还为您的 Azure Repos 存储库添加了一个新的入口点。您现在可以使用 **从 Azure Repos 打开存储库...** 菜单项(位于远程选择器中的 **打开远程存储库...** 菜单项下)从 https://vscode.dev 中连接到您的 Azure Repos 存储库。
此外,您现在可以使用旧的 Azure DevOps URL 格式(例如,https://<org>.visualstudio.com
)在 vscode.dev 中打开 Azure Repos 存储库,方法是在 URL 前添加 https://vscode.dev
。
改进的远程菜单
远程菜单中现在出现了三个额外的命令。
- **关闭远程工作区** - 将工作区更改为空工作区。
- **下载 Visual Studio Code** - 转到 https://vscode.js.cn/download.
- **转到存储库** - 在源代码控制主机网站上打开存储库,例如 https://github.com 用于 GitHub 存储库。
对扩展的贡献
Java
现在,Java 扩展包 具有产品内欢迎体验,可以帮助您配置和了解 VS Code 中的 Java。演练涵盖安装 Java 运行时和有用的框架、打开和调试项目以及直接在 VS Code 中运行测试。
您还可以查看 https://vscode.js.cn/docs/java 上的 Java 教程和用户指南,以帮助您入门。
Jupyter
性能改进
对 Jupyter 内核(特别是 Python
)的启动进行了一些性能改进。以前打开过笔记本的用户将在启动内核时看到 2 倍的速度提升。重启 Python
内核也应该更快。
有关为提高性能而进行的更改的更多详细信息,您可以查看以下问题
- 支持预热内核以改善笔记本的启动体验。(#7903)
- 更快地激活 Python 环境,例如 Conda。(#8342)
- 避免在启动 jupyter 时启动默认内核。(#8185)
- 避免在之前找到 IPyKernel 后不必要地搜索它。(#8196)
- 避免在不需要
Jupyter
运行时来启动内核时不必要地搜索Jupyter
包。(#8350, #8352)
处理内核故障的改进
已添加诊断消息以及快速修复,以警告在安装 Python 包时使用 !pip install
。快速修复将帮助用户选择正确的命令 %pip install
。
在内核在执行过程中无法启动或停止时,已进行了一些改进以提供更好、更有意义的错误消息。错误现在显示在单元格输出中,以及有关如何解决问题的说明。这确保用户了解问题,并能够解决问题,以防他们错过 VS Code 右下角显示的错误。
Python
对不受信任和虚拟工作区的有限支持
Python 扩展现在对不受信任的工作区(请参阅 工作区信任)或虚拟文件系统(例如,如果打开了远程 GitHub 存储库)具有有限的支持。在这种情况下,只提供部分 IntelliSense,并且扩展的其他功能不可用。
- 悬停、同文件完成以及对内置函数(如 print)的完成可用,但扩展仅限于使用您当前打开的文件。
- 对于不受信任的工作区,只支持 Pylance 语言服务器。
- 对于虚拟工作区,只支持 Jedi 和 Pylance。
状态栏中的语言项已更新以指示这些情况。
模块重命名重构
您现在可以使用 Python 和 Pylance 扩展更轻松地重命名模块。重命名 Python 模块后,系统会提示您选择是否要在整个代码中更改所有导入和引用。如果您不确定,可以先预览更改将是什么样子,然后再做出决定。一旦您确信,可以选择 **应用重构** 或 **放弃重构** 以不应用建议的更改。
远程开发
继续对 远程开发扩展 进行工作,这些扩展允许您使用容器、远程计算机或 Windows 子系统 for Linux (WSL) 作为功能齐全的开发环境。
1.63 中的功能亮点包括
- 您现在可以在 SSH 服务器上使用 **在容器中重新打开** 命令在容器中打开文件夹。
- 改进的转发端口安全性避免了不安全的端口。
- 可配置的 WSL 连接方法允许您使用
wsl.exe
或套接字连接与服务器通信。 - 涵盖如何 更改项目的默认位置 和 在 Windows 上提高性能 的高级容器配置视频。
您可以在 远程开发发行说明 中了解有关新扩展功能和错误修复的信息。
GitHub Pull 请求和问题
继续对 GitHub Pull 请求和问题 扩展进行工作,该扩展允许您处理、创建和管理 Pull 请求和问题。查看 扩展的 0.34.0 的变更日志 以了解亮点。
扩展编写
更新的 API 提案结构
我们已经更改了 API 提案的管理方式。以前,有一个包含所有提案的单个文件 vscode.proposed.d.ts
。此文件已增长,很难确定扩展使用哪些提案以及某个提案是否已在稳定 API 中。现在每个提案都有一个文件。
例如
vscode.proposed.languageStatus.d.ts
- 语言状态项提案。vscode.proposed.tabs.d.ts
- 编辑器选项卡和选项卡组的提议 API。
每个提案都有一个唯一的名称,想要使用提议 API 的扩展需要在其 package.json
中列出这些名称。package.json
中的 enableProposedApi
属性被新的 enabledApiProposals
替换,它是一个包含提案名称的字符串数组,并且具有 IntelliSense 和验证支持。
API 提案的更新流程应如下所示
- 找到您想尝试的提案,并将它的名称添加到
package.json#enabledApiProposals
中。 - 使用最新的 vscode-dts 并运行
vscode-dts dev
。它会将相应的d.ts
文件下载到您的工作区。 - 您现在可以针对提案进行编程了。
可以在 问题 #136964 中找到详细的迁移指南和示例迁移。另请注意,有关提议 API 用法的限制没有改变。使用提议 API 的扩展不能发布,也不能按原样使用。
快速选择 API 改进
在此迭代中,我们正在最终确定 VS Code 中快速选择的几个 API。
快速选择项内联按钮
能够提供丰富的输入体验是我们的扩展 API 的目标,使用 VS Code 的快速选择的熟悉度可以实现强大且简单的 UI 流程。一项新增功能是扩展现在可以将按钮添加到各个 QuickPickItem
中。
单击按钮会触发 QuickPick
对象上存在的 onDidTriggerItemButton
事件。我们期待着看到您如何在扩展中使用这些按钮。
更新项目时保持滚动位置的能力
除了将按钮添加到 QuickPickItem
的能力之外,您可能还想在更新项目时保持滚动位置。对于想要执行以下操作的扩展,这是一种常见的用例
- 实现一个“从列表中删除此项目”(例如,Ctrl/Cmd + P
x
QuickPickItemButton)。 - 实现一个“以某种方式切换此项目”(例如,“插入代码段”命令)。
- 异步加载快速选择中的项目。
window.createQuickPick()
返回的 QuickPick
对象上的 keepScrollPosition
属性允许您控制快速选择中的滚动位置(cursorTop
)是否移动到列表顶部。
身份验证 API 改进
在此迭代中,我们正在最终确定与 VS Code 中身份验证相关的几个 API。
强制创建新会话
有时,当您使用 authentication.getSession()
获取会话时,它可能对某些资源有效,但对其他资源无效,通过再次执行登录流程可以解决这种情况。
一个例子是 GitHub 单点登录的安全断言标记语言 (SAML) 支持。默认情况下,使用 repo
范围为您生成的令牌将能够访问您自己的个人存储库。但是,如果您所在的组织启用了 GitHub 的单点登录,则必须明确授予会话访问该组织中存储库的权限。
在此示例中,GitHub 身份验证提供程序无法区分已正确 SAML'd 的令牌(用于您要访问的内容)或未 SAML'd 的令牌,因此要纠正此行为,您现在可以强制创建新的会话。
AuthenticationGetSessionOptions
现在有一个 forceNewSession
属性,允许您要求用户再次登录。如果您将其设置为 true
,用户将看到
您还可以指定一个包含 detail
字符串的对象,如果您想向用户显示更详细的信息。
如果扩展有一个会话,则静默检索会话
我们已经看到的一种常见模式是,一些扩展在激活时会检查它们是否有可用的身份验证会话。如果是,他们将使用它来提前预加载数据并执行其他任务,以便稍后加快性能。这样做不好的一点是,如果用户没有授予该扩展访问身份验证会话的权限,将在帐户菜单上显示一个徽章,并且将在菜单中添加一个项目,要求用户登录。
这对于某些情况来说很好,但在其他情况下则不可取,并且会让用户的屏幕显得混乱。为了解决这个问题,AuthenticationGetSessionOptions
上有一个新的属性称为 silent
,它允许您在不显示任何指示扩展请求它的情况下请求会话。这样,扩展就可以在有能力获取会话时执行它想要的操作,但如果没有,它就不会打扰用户。
注意:此 API 仅在扩展过去已经获得访问会话的权限的情况下才会返回经过身份验证的会话(换句话说,它是“受信任的扩展”)。扩展永远不会获得用户未同意使用的会话。
设置编辑器改进
排序设置
现在可以使用 order
字段对单个设置进行排序。排序的设置始终在同一类别中未排序的设置之前,并且排序是相对的。
未分组类别支持
设置也可以分组在主扩展标题下,而不是特定类别下。要执行此操作,请将其中一个类别的类别标题设置为与扩展显示名称相同。
请注意,在下面的示例中,Conf > Language: Show Size 设置直接位于 Configuration Sample 标题下。
对数字和整数对象的支持
设置编辑器现在支持具有非空数字/整数值的的对象。
executeCommand
的新类型签名
在以前版本的 VS Code 中,vscode.commands.executeCommand
的类型被设置为始终返回一个可能为未定义值的承诺
export function executeCommand<T>(command: string, ...rest: any[]): Thenable<T | undefined>;
但是,并非所有命令都可以返回 undefined
。例如,返回项目数组的命令通常返回一个空数组,而不是如果没有任何结果则返回 undefined
。在这些情况下,您必须使用难看的强制转换或添加不必要的检查来编写类型正确的代码。
为了解决这个问题,我们更新了 executeCommand
的类型,使其更加明确
export function executeCommand<T = unknown>(command: string, ...rest: any[]): Thenable<T>;
这意味着,如果命令可以返回 undefined
,则必须在类型参数中显式传入 | undefined
vscode.commands.executeCommand<vscode.CallHierarchyItem | undefined>('vscode.prepareCallHierarchy', ...);
此更改只影响 executeCommand
的类型,不会改变此函数的行为。
更新 vscode.d.ts
以支持 exactOptionalPropertyTypes
我们更新了 vscode.d.ts
中的类型,以更好地支持 TypeScript 的 exactOptionalPropertyTypes
严格性选项。这项工作包括
- 澄清哪些可选属性可以被赋值为
undefined
。 - 在使用
?
与| undefined
的方式上更加一致。
如果您在扩展中使用 exactOptionalPropertyTypes
,请告知我们您是否在 vscode.d.ts
类型中遇到任何问题。
来自 URI 的 HTML 自定义数据
自定义数据 允许用户和扩展使用新的 HTML 标签和属性扩展 HTML 语言支持。
在此版本中,HTML 自定义数据贡献也接受文档 URI。您可以使用它通过来自 TextDocumentContentProvider 的文档在运行时提供自定义数据。
配置默认值覆盖
您现在可以通过 package.json
中的 configurationDefaults
贡献点覆盖其他已注册配置的默认值。例如,以下代码段将 files.autoSave
设置的默认行为覆盖为在焦点更改时自动保存文件。
"configurationDefaults": {
"files.autoSave": "onFocusChange"
}
注意:具有 application
或 machine
范围的配置无法覆盖。
替换输出通道中的内容
在此里程碑中,OutputChannel
对象上的一个新的 replace
API 可以替换输出通道中的内容。
/**
* Replaces all output from the channel with the given value.
*
* @param value A string, falsy values will not be printed.
*/
replace(value: string): void;
workspaceContains
的超时
当使用 workspaceContains:
激活事件和通配符模式时,VS Code 会在工作区中启动一个文件名搜索,查找与提供的通配符模式匹配的文件名。一旦找到匹配的文件名,扩展就会被激活。如果在 7 秒内没有找到匹配的文件名,VS Code 现在将取消搜索,并且扩展不会被激活。
发布预发布扩展
VS Code 现在支持扩展作者通过 vsce
发布其扩展的预发布版本,方法是传递 --pre-release
标志。这意味着您可以将最新的功能提供给选择安装预发布版本的用户,并在正式扩展发布之前获得早期反馈。
vsce publish --pre-release
VS Code Marketplace 仅支持 major.minor.patch
用于扩展版本,并且尚不支持 semver
预发布标签。因此,我们建议扩展使用 major.EVEN_NUMBER.patch
用于发布版本,使用 major.ODD_NUMBER.patch
用于预发布版本。例如:0.2.*
用于发布,0.3.*
用于预发布。VS Code 将自动将扩展更新到可用的最高版本,因此即使用户选择了预发布版本,一旦发布了具有更高版本的扩展,该用户也将更新到发布版本。
有关预发布扩展的更多信息,请参阅 预发布扩展 主题。
语言服务器协议
语言服务器协议 的一个新的下一个版本,以及相应的 npm 模块,已经发布。除了 各种小改进 之外,新版本还包含对内联值的提议实现。
调试适配器协议
输出事件的新重要类别
调试适配器协议的 Output
事件用于发送调试目标的 stdout 和 stderr 流,以及来自调试器到调试控制台的信息性消息。对于用户来说,此消息流可能很多,关键信息可能会被忽略。为此,Output
事件中添加了一个新的类别 important
,调试适配器可以使用它来显示需要突出显示且不会被用户忽略的关键消息。important
类别是对客户端在高度可见的 UI 中显示重要信息的提示,例如作为弹出通知。由于此类别是提示,因此客户端可能会忽略提示并假定 default
类别 (console
)。
对执行控制请求的澄清和改进
以前,调试适配器协议指定所有“执行控制”请求 (continue
、next
、stepIn
、stepOut
、stepBack
、reverseContinue
) 仅在单个线程上操作,但实现可以决定忽略线程参数并在所有线程上操作。由于这种模糊的“单个线程”语义实际上并没有什么用,因此调试适配器通常会实现一些更有用的东西
- “step” 请求,通过恢复其他线程来让其他线程自由运行,同时逐步执行当前线程。
- “continue” 请求,恢复所有线程。
由于当前规范对于执行控制请求来说不切实际,因此我们更改了所有执行控制请求 (continue
、next
、stepIn
、stepOut
、stepBack
、reverseContinue
) 的规范,使其与通常的实现相匹配。
此外,某些调试适配器需要“替代语义”,其中step
或continue
仅对当前线程起作用,但保持所有其他线程处于挂起状态。对于此“替代行为”,已向所有执行控制请求添加了一个新的可选singleThread
属性。调试适配器必须使用相应的新的功能supportsSingleThreadExecutionRequests
来指示客户端执行控制请求是否支持singleThread
属性。
建议的扩展 API
每个里程碑都附带新的提议 API,扩展作者可以尝试使用它们。和以往一样,我们希望收到您的反馈。以下是尝试使用提议 API 的步骤
- 找到您想尝试的提议 并将其名称添加到
package.json#enabledApiProposals
中。 - 使用最新的 vscode-dts 并运行
vscode-dts dev
。它会将相应的d.ts
文件下载到您的工作区。 - 您现在可以针对提案进行编程了。
您不能发布使用提议 API 的扩展。在下一次发布中可能会有重大更改,我们永远不想破坏现有扩展。
QuickPickItem 分隔符
在本迭代中,我们引入了扩展通过提议 API(vscode.proposed.quickPickSeparators.d.ts
)向 Quick Pick 添加分隔符(也称为“类别”)的功能。这对于对项目进行分组或只是在项目之间留出一些空间很有用
要向现有的 Quick Pick 添加分隔符,您可以向现有的项目列表添加一个新的 QuickPickItem
,但在 QuickPickItem
上指定 kind
属性,并将其设置为 QuickPickItemKind.Separator
。
在上面的示例中,您将以下对象添加到项目列表中
{
label: 'APIs',
kind: QuickPickItemKind.Separator
}
如果您没有指定 kind
属性,或者将其设置为 QuickPickItemKind.Default
,则该项目将被视为普通的 QuickPickItem
。
您可以在 问题 #74967 中提供有关此 API 的反馈。
值得注意的修复
- 5989 无法在使用 openssh 的远程 Windows 机器上运行任何任务
- 45629 Mac 上的 Google 日语输入法 (IME) - 建议与文本重叠
- 131345 使用
\n
的默认设置弃用警告会破坏 json - 133521 要求安装 nvm,但它已经安装了
- 133623 调试工具栏如果聚焦线程不再存在则不会更新
- 134254 无法输入韩语。分割自身或丢失
- 134429 Zlib 错误:无效的距离太远
- 135838 如果有另一个名称更长的文件,则我无法保存文件
- 136684 调用堆栈项不会使用正确的内容打开选项卡
- 137012 Emmet 不适用于 VS Code 1.62.2(通用)中的 js/jsx 文件
- 138153 性能:_removePropertiesWithPossibleUserInfo 约占加载渲染器的成本的 10%
- 138302 性能:仅在扩展注册后更新编辑器配置
- 138517 vscode.dev 无法在私有存储库中切换分支
感谢
最后但并非最不重要的是,衷心感谢 VS Code 的贡献者。
Web 扩展
扩展作者为启用以 Web 扩展(以下列表为 11 月 2 日至 12 月 6 日之间)运行代码的扩展
- Material Icon Theme (lit fork) (abschill)
- Base64 Utils (Adrientoub)
- LS-Club (AdvantiSS)
- Apollo Workbench (Apollo GraphQL)
- A-SOUL 鼓励师 (AS042971)
- Django (Baptiste Darthenay)
- TOML Language Support (be5invis)
- Simple React Snippets (Burke Holland)
- MASM/TASM (clcxsrolau)
- Tree (CTC)
- Tree (Insiders) (CTC)
- Structured Data Templates (Daniel G. Taylor)
- Notepad Notebook (Devon7925)
- Of course I still log you (Diego Perez)
- Hello, DotNetJS! (Elringus)
- Excel Viewer (GrapeCity)
- FTL XML (hahn-kev)
- ECL Language (HPCC Systems)
- Graphviz Previewer Web (IJMacD)
- ImJoy (ImJoy Team)
- InterSystems ObjectScript (InterSystems Developer Community)
- Shader Toy (Web) (Jackson Kearl)
- Dark Light (Jakka Prihatna)
- React Native Mockups Explorer (jamsch)
- Quote List (jmviz)
- Vue Language Features (Volar) (Johnson Chu)
- Code Runner for Web (Jun Han)
- GZDoom ZScript (kaptainmicila)
- nginx.conf hint (Liu Yue)
- Loadmill (Loadmill)
- UUID Generator (ludwhe)
- CSS Formatter (Martin Aeschlimann)
- SnowScript JS (Mauricio Rojas)
- HLASM Browser dev (mbali)
- Template String Converter (meganrogge)
- Micro Focus COBOL (Micro Focus)
- Micro Focus Enterprise (Micro Focus)
- Cursor Align (Mike Moore)
- Cursor Trim (Mike Moore)
- Multi-Cursor Search (Mike Moore)
- numeric (neal.bkn)
- Toast (Nick Bradley)
- steris (numso)
- N/A (Orta)
- Wurst language support (peterzeller)
- ShowFlags (PEW's Corner)
- 文件夹归档器 (Philip Damianik)
- ZIP 归档类型 (Philip Damianik)
- 在 Webview 中打开 Web 扩展 (Project μ)
- 替换为 (rioj7)
- 按选择 (rioj7)
- Powercursor (Rishov Sarkar)
- BrightScript 语言 (RokuCommunity)
- 脚本资产 (Saige)
- LinkMe (saswatbh)
- 绘图编辑器 (Seflless)
- Azure ML 远程 Web (sevillal)
- vscode-cml (sevillal)
- 重排段落 (Stephen Sigwart)
- Neon Dark 主题 (Sudhan)
- 日语词语处理 (Suguru Yamamoto)
- tldraw (tldraw)
- vscodevim-sneak-fork (vscodevim-sneak-fork)
- Expression2-LS (Vurv78)
- Weigl WEM | 脚本 (Weigl Control LLC)
- GreyScript (WyattL)
- mplstyle (Matplotlib) (yy0931)
- OverPy (Zezombye)
- COBOL 折叠 (zokugun)
- 显式折叠 (zokugun)
- Zokugun 主题 (zokugun)
问题跟踪
对我们的问题跟踪的贡献
- John Murray (@gjsjohnmurray)
- Andrii Dieiev (@IllusionMH)
- CodeCrazy-ywt (@CodeCrazy-ywt)
- Simon Chan (@yume-chan)
- ArturoDent (@ArturoDent)
- Lemmingh (@Lemmingh)
拉取请求
对 vscode
的贡献
- @adaex (Aex): 更新到最新的 seti-ui 图标主题 PR #136375
- @alex-brs: build/npm/preinstall: 修复节点版本错误消息 PR #136794
- @filiptronicek (Filip Troníček): 将参数
connectionToken
重命名为connection-token
PR #136620 - @gjsjohnmurray (John Murray)
- 在活动栏中向 SCM 添加进度指示器,以便 QuickDiff 准备完毕 PR #136969
- 设置描述中缺少一个词语(修复 #137027) PR #137028
- 避免在来自帐户的静默登录中出现冲突的范围和命令 ID(修复 #137601) PR #137613
- @grandeljay (Jay): 从 PHP 语句中删除括号 PR #137447
- @Gvozd (Gvozd): 133348 在编辑器中打开搜索时修复内存溢出错误 PR #136554
- @jeanp413 (Jean Pierre)
- 修复远程终端错误:未找到命令 $setUnicodeVersion PR #136171
- 修复远程终端标题在重新加载时未恢复的问题 PR #136176
- 修复错误:在重命名终端选项卡时无法运行递归拼接 PR #136177
- 修复在手动构建 vscode 服务器时缺少文件的问题 PR #137570
- @jherchen (Johannes Herchen): 修复 preinstall 脚本 PR #136638
- @JustinGrote (Justin Grote): 修正 booleanRegex 以正确匹配仅 'true' 和 'false' PR #137822
- @jzyrobert (Robert Jin): 更新 html-language-features 文档和任务到 yarn PR #136543
- @laurentlb (Laurent Le Brun): 将 'expandLineSelection' 设为一个适当的操作。 PR #135917
- @MalikIdreesHasanKhan (Malik Idrees Hasan Khan): 修复了错别字。 PR #135729
- @mamphis (Mattis Wacker): 修复缺少的活动调试行 + 断点字形 PR #137471
- @mkantor (Matt Kantor): 修复了文档注释中的几个错别字 PR #137810
- @orange4glace: #fix: 108459 PR #108666
- @parched (James Duley): 修复任务配置错误消息中的语法。 PR #137898
- @pdrgds (Pedro Guedes): 修复 #131458 PR #136625
- @PEZ (Peter Strömberg)
- 添加选项:在屏幕录制叠加层中包含命令 PR #126742
- 遵守设置仅显示快捷键 PR #136251
- @pohzipohzi (Zi How Poh): 添加跳转到下一个/上一个问题的选项 PR #135736
- @Pranomvignesh (Pranom Vignesh): 修复快捷键标题 PR #123071
- @rudavko (Andrii): 通过使用现有的实用程序函数来删除代码重复 PR #137016
- @RyanAfrish7 (Afrish Khan S): 将降价文件中 img 的 href 从文件更改为 vscode-file PR #136687
- @SeriousBug (Kaan Genç): 允许扩展禁用内置降价预览按钮 PR #136273
- @sijakret: html-language-features: 对 customData.html 的文本文档提供者支持 PR #137557
- @smcenlly (Simon McEnlly): 输出通道:新的 replaceAll API 以改进输出通道渲染 PR #136402
- @suzmue (Suzy Mueller): 如果焦点线程不存在,则清除它 PR #133637
对 vscode-codicons
的贡献
- @Profesor08: 添加了
newline
图标 PR #91
对 vscode-css-languageservice
的贡献
- @avigoldman (Avi Goldman): 尊重
kind
属性 PR #254
对 vscode-eslint
的贡献
- @asingh04 (Abhishek Singh): 处理预先存在的禁用规则注释 PR #1261
对 vscode-extension-samples
的贡献
对 vscode-html-languageservice
的贡献
- @gustavnikolaj (Gustav Nikolaj): 在所有 src 和 href 属性中触发完成 PR #117
- @jzyrobert (Robert Jin): 为属性标签添加自动完成 PR #116
对 vscode-json-languageservice
的贡献
- @gjsjohnmurray (John Murray): 验证主机名、ipv4 和 ipv6 格式 (#_100) PR #118
- @mati-o (Mati O): 修复 $ref 到 $id PR #107
- @Relequestual (Ben Hutton): 指出 JSON Schema 草案 2020-12 尚未支持 PR #117
对 vscode-languageserver-node
的贡献
- @CodingDoll: 修正 engines 字段 node 14+ PR #862
- @fvclaus: 当范围未定义时,SymbolInformation 的位置丢失 PR #849
- @hamirmahal (Hamir Mahal)
- @robertoaloi (Roberto Aloi): 修正错误消息中的拼写错误 PR #866
对 vscode-pull-request-github
的贡献
- @38elements (38elements)
- @burkeholland (Burke Holland): 打开 gist 仓库会造成获取错误 PR #2933
- @emtei (Mateusz Stopka): 不要为已关闭或已合并的 PR 激活审查模式 PR #3021
- @taisph (Tais P. Hansen): 修复生成的 分支名称 在 bash 中需要引号 PR #3084
对 vscode-vsce
的贡献
- @microhobby (Matheus Castello): 将
libsecret
添加到Dockerfile
并提及README
中的依赖关系 PR #646
对 language-server-protocol
的贡献
- @doriath (Tomasz Zurkowski): 明确重命名请求的响应。 PR #616
- @yxrkt: ResponseMessage.result 可以是数组类型 PR #1012
对 monaco-editor
的贡献
- @activeguild (j1ngzoue): 添加 'browser-ems-vite-react' 示例 PR #2767
- @emojiiii (C.Y.Kun): 修复网站游乐场的一些错误 PR #2779
- @MasterOdin (Matthew Peveler)
- @milahu: 修复 monaco.d.ts 的链接 PR #2769
- @Pranomvignesh (Pranom Vignesh): 文档中的语义令牌提供者示例已损坏 PR #2764
- @rramo012 (Rafael Ramos): 修复文档链接 PR #2748