2021 年 11 月 (版本 1.63)
更新 1.63.1:此更新解决了这些安全问题。
更新 1.63.2:此更新解决了这些问题。
下载:Windows:x64 Arm64 | Mac:通用版 Intel Apple 芯片 | 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 服务器上的容器中工作 - 新增 Remote - 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 在扩展的“安装”下拉菜单中显示一个额外的“安装预发布版本”选项,用于安装预发布版本。
安装后,一个指示器会明确显示您是否正在使用扩展的预发布版本
如果您已安装的扩展有预发布版本,您可以轻松切换到它
更新的查找操作
搜索视图中的查找操作现在与编辑器中的查找操作使用相同的样式
源代码管理
快速差异中忽略修剪空白
您现在可以使用 scm.diffDecorationsIgnoreTrimWhitespace
设置,将左侧边栏中显示的 SCM 快速差异功能配置为忽略修剪空白。
笔记本
调整笔记本中的字体大小
新的 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 字符容易混淆的字符也会被高亮显示
您可以阅读“不可见的 JavaScript 后门”博客文章或这篇剑桥大学文章,了解不可见或易混淆的 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:打开预览”命令不同,“重新打开方式”不会打开新的编辑器选项卡,而是更改已打开的编辑器选项卡的显示方式。再次使用“重新打开方式”可将文件切换回默认的文本视图。
此外,您现在可以使用 workbench.editorAssociations
设置将 VS Code 配置为自动将任何 Markdown 文件作为预览打开
"workbench.editorAssociations": {
"*.md": "vscode.markdown.preview.editor"
}
Markdown 预览增量更新
内置的 Markdown 预览现在会在您键入时更智能地更新自身。预览不再在每次更新时替换整个 Markdown 预览文档,而是使用 DOM 差异比较来仅替换预览文档中已更改的元素。这减少了有时在键入时可能发生的抖动。
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 存储库。
此外,您现在可以通过在 URL 前添加 https://vscode.dev
,在 vscode.dev 中使用旧版 Azure DevOps URL 格式(例如 https://<org>.visualstudio.com
)打开 Azure Repos 存储库。
改进的远程菜单
远程菜单中现在出现三个额外的命令
- 关闭远程工作区 - 将工作区更改为空工作区。
- 下载 Visual Studio Code - 转到 https://vscode.js.cn/download。
- 转到存储库 - 在源代码管理主机网站上打开存储库,例如 GitHub 存储库的 https://github.com。
对扩展的贡献
Java
Java 扩展包现在具有产品内的欢迎体验,可帮助您在 VS Code 中配置和学习 Java。引导教程涵盖了安装 Java 运行时和有用的框架、打开和调试您的项目以及直接在 VS Code 中运行测试。
您还可以访问 https://vscode.js.cn/docs/java 上的 Java 教程和用户指南,以帮助您入门。
Jupyter
性能改进
Jupyter 内核的启动,特别是 Python
内核的启动,进行了多项性能改进。以前打开过笔记本的用户在启动内核时将看到 2 倍的速度提升。重新启动 Python
内核也应该更快。
有关为提高性能所做更改的更多详细信息,您可以查阅以下问题
- 支持预热内核以改善笔记本的启动体验。(#7903)
- 加快 Conda 等 Python 环境的激活。(#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 模块,系统将提示您选择是否要更改代码中的所有导入和引用。如果您不确定,可以先预览更改的效果再做决定。一旦您确认,可以选择“应用重构”或“放弃重构”以不应用提议的更改。
远程开发
远程开发扩展的工作仍在继续,它允许您使用容器、远程机器或 适用于 Linux 的 Windows 子系统 (WSL) 作为功能齐全的开发环境。
1.63 版的功能亮点包括
- 现在,在使用 SSH 服务器时,您可以使用“在容器中重新打开”命令在容器中打开文件夹。
- 改进的转发端口安全性可避免不安全端口。
- 可配置的 WSL 连接方法允许您使用
wsl.exe
或套接字连接与服务器通信。 - 高级容器配置视频,涵盖了如何更改项目的默认位置以及在 Windows 上提高性能。
您可以在远程开发发行说明中了解新的扩展功能和 bug 修复。
GitHub 拉取请求和问题
GitHub 拉取请求和问题扩展的工作仍在继续,它允许您处理、创建和管理拉取请求和问题。查看该扩展的 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 中 QuickPick 的几个 API。
QuickPickItem 内联按钮
能够提供丰富的输入体验是我们扩展 API 的一个目标,而利用 VS Code Quick Pick 的熟悉度可以实现强大而简单的 UI 流程。其中一项新增功能是,扩展现在可以为单个 QuickPickItem
添加按钮。
单击按钮会触发 QuickPick
对象上存在的 onDidTriggerItemButton
事件。我们期待看到您如何在您的扩展中使用这些按钮。
更新项目时保持滚动位置的功能
除了能够向 QuickPickItem
添加按钮之外,您可能还希望在更新项目时保持滚动位置。这对于希望实现以下功能的扩展来说是一个常见的用例
- 实现“从列表中删除此项”(例如,Ctrl/Cmd + P
x
QuickPickItemButton)。 - 实现“以某种方式切换此项”(例如,“插入代码片段”命令)。
- 在快速选择中异步加载项目。
从 window.createQuickPick()
返回的 QuickPick
对象上的 keepScrollPosition
属性允许您控制 Quick Pick 中的滚动位置 (cursorTop
) 是否回到列表顶部。
身份验证 API 改进
在此迭代中,我们正在最终确定 VS Code 中与身份验证相关的几个 API。
强制创建新会话
有时,当您使用 authentication.getSession()
获取会话时,它可能对某些资源有效,但对其他资源无效,通过再次执行登录流程,可以修复这种情况。
一个例子是 GitHub 单点登录的 SAML(安全断言标记语言)支持。默认情况下,为您生成的具有 repo
范围的令牌将能够访问您自己的个人存储库。但是,如果您所在的组织启用了 GitHub 的单点登录,则必须明确授予会话访问该组织中存储库的权限。
在此示例中,GitHub 身份验证提供程序无法区分令牌是否已正确通过 SAML 认证以访问您尝试访问的内容,因此为了纠正此行为,您现在可以强制创建新会话。
AuthenticationGetSessionOptions
现在有一个 forceNewSession
属性,允许您要求用户再次登录。如果您将其设置为 true
,用户将看到
如果您想向用户显示更具描述性的消息,还可以指定一个带有 detail
字符串的对象。
如果扩展已有会话,则静默检索
我们看到的一种常见模式是,一些扩展在激活时会检查它们是否具有可用的身份验证会话。如果有,它们将使用它预加载数据并提前执行其他任务,以提高后续性能。这样做的一个缺点是,如果用户尚未授予该扩展访问身份验证会话的权限,则帐户菜单上会显示一个徽章,并且菜单中会添加一个要求用户登录的项。
这在某些情况下是可以接受的,但在其他情况下则不受欢迎,并且会给用户造成屏幕混乱。为了解决这个问题,AuthenticationGetSessionOptions
上有一个新属性名为 silent
,它允许您请求会话而不会显示任何扩展请求会话的指示。这样,如果扩展能够获取会话,它就可以执行其所需操作,但如果不能,它也不会打扰用户。
注意:此 API 仅在扩展过去已被授予会话访问权限(换句话说,它是一个“受信任的扩展”)时才会返回已认证的会话。扩展永远不会被授予用户未同意的会话。
设置编辑器改进
有序设置
单个设置现在可以使用 order
字段进行排序。在同一类别中,有序设置始终位于无序设置之前,并且排序是相对的。
非分组类别支持
设置也可以在主扩展标题下分组,而不是在特定类别下。为此,将其中一个类别的类别标题设置为与扩展的显示名称相同。
请注意,在下面的示例中,“配置” > “语言:显示大小”设置直接位于“配置示例”标题下。
支持数字和整数对象
现在设置编辑器中支持具有不可为空的数字/整数值的对象。
executeCommand 的新类型签名
在 VS Code 之前的版本中,vscode.commands.executeCommand
的类型被定义为始终返回一个可能为 undefined 值的 Promise
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
的类型定义,而不改变此函数的行为。
为 exactOptionalPropertyTypes 更新 vscode.d.ts
我们已更新 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 超时
当使用带有 glob 模式的 workspaceContains:
激活事件时,VS Code 会在工作区中启动文件名称搜索,查找与所提供的 glob 模式匹配的文件名称。一旦找到匹配的文件名称,扩展就会被激活。如果在 7 秒内未找到匹配的文件名称,VS Code 现在将取消搜索,并且扩展将不会被激活。
发布预发布扩展
VS Code 现在支持扩展作者通过 vsce
并传递 --pre-release
标志来发布其扩展的预发布版本。这意味着您可以将最新功能提供给选择安装预发布版本的用户,并在官方扩展发布之前获得早期反馈。
vsce publish --pre-release
VS Code 应用商店仅支持扩展版本的 major.minor.patch
格式,尚不支持 semver
预发布标签。因此,我们建议扩展使用 major.EVEN_NUMBER.patch
作为发布版本,使用 major.ODD_NUMBER.patch
作为预发布版本。例如:发布版本使用 0.2.*
,预发布版本使用 0.3.*
。VS Code 会自动将扩展更新到可用的最高版本,因此即使用户选择了预发布版本,一旦有更高版本的扩展发布,该用户也会被更新到发布版本。
有关预发布扩展的更多信息,请参阅预发布扩展主题。
Language Server Protocol
语言服务器协议的下一个新版本,以及相应的 npm 模块,已经发布。除了各种次要改进之外,新版本还包含了一个内联值提议的实现。
Debug Adapter Protocol
Output 事件的新重要类别
调试适配器协议的 Output
事件用于将被调试程序的 stdout 和 stderr 流以及调试器发出的信息性消息发送到调试控制台。这种消息流可能对用户来说处理量很大,并且关键信息可能被忽视。因此,Output
事件中新增了一个 important
类别,调试适配器可以使用它来显示需要突出显示且不被用户忽视的关键消息。important
类别是客户端在一个高度可见的 UI 中显示重要信息的提示,例如作为弹出通知。由于此类别是一个提示,客户端可能会忽略该提示并假定为 default
类别 (console
)。
执行控制请求的澄清和改进
之前,调试适配器协议规定所有“执行控制”请求(continue
、next
、stepIn
、stepOut
、stepBack
、reverseContinue
)都在单个线程上操作,但实现可以选择忽略线程参数并在所有线程上操作。由于这种模糊的“单线程”语义并非真正有用,调试适配器通常会实现更有用的功能
- “单步”请求,它使当前线程单步执行,同时通过恢复其他线程让它们自由运行。
- “继续”请求,它恢复所有线程。
由于当前的规范对于执行控制请求不切实际,我们已更改了所有执行控制请求(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 添加分隔符,您可以向现有项目列表添加一个新的 QuickPickItem
,但要指定 QuickPickItem
上的 kind
属性并将其设置为 QuickPickItemKind.Separator
。
在上面的示例中,您需要将以下对象添加到您的项目列表中
{
label: 'APIs',
kind: QuickPickItemKind.Separator
}
如果您不指定 kind
属性,或者将其设置为 QuickPickItemKind.Default
,则该项将被视为普通的 QuickPickItem
。
您可以在 问题 #74967 中提供有关此 API 的反馈。
显著修复
- 5989 无法在远程 Windows 机器上使用 openssh 运行任何任务
- 45629 Mac 上的 Google 日语输入法 (IME) - 建议与文本重叠
- 131345 默认设置弃用警告中的
\n
破坏了 json - 133521 询问是否安装 nvm,而它已经安装了
- 133623 如果焦点线程不再存在,调试工具栏不会更新
- 134254 无法输入韩语。字符分割或缺失
- 134429 Zlib 错误:距离过远
- 135838 当存在另一个文件名更长的文件时,我无法保存文件
- 136684 调用堆栈项未打开带有正确内容的选项卡
- 137012 Emmet 在 VS Code 1.62.2 (Universal) 的 js/jsx 文件中不起作用
- 138153 性能:_removePropertiesWithPossibleUserInfo 占渲染器加载成本的 ~10%
- 138302 性能:仅在扩展注册后更新编辑器配置
- 138517 vscode.dev 无法在私有存储库中切换分支
感谢
最后但同样重要的是,衷心感谢 VS Code 的贡献者。
Web 扩展
扩展作者,感谢他们启用了作为Web 扩展运行代码的扩展(以下列表涵盖了 11 月 2 日至 12 月 6 日期间)
- Material Icon Theme (lit fork) (abschill)
- Base64 工具 (Adrientoub)
- LS-Club (AdvantiSS)
- Apollo Workbench (Apollo GraphQL)
- A-SOUL 鼓励师 (AS042971)
- Django (Baptiste Darthenay)
- TOML 语言支持 (be5invis)
- Simple React 代码片段 (Burke Holland)
- MASM/TASM (clcxsrolau)
- 树 (CTC)
- 树 (内部版本) (CTC)
- 结构化数据模板 (Daniel G. Taylor)
- 记事本笔记本 (Devon7925)
- 我当然还在记录你 (Diego Perez)
- 你好,DotNetJS! (Elringus)
- Excel 查看器 (GrapeCity)
- FTL XML (hahn-kev)
- ECL 语言 (HPCC Systems)
- Graphviz Web 预览器 (IJMacD)
- ImJoy (ImJoy Team)
- InterSystems ObjectScript (InterSystems Developer Community)
- Shader Toy (Web) (Jackson Kearl)
- 暗光 (Jakka Prihatna)
- React Native 模拟器浏览器 (jamsch)
- 引用列表 (jmviz)
- Vue 语言功能 (Volar) (Johnson Chu)
- Web 版代码运行器 (Jun Han)
- GZDoom ZScript (kaptainmicila)
- nginx.conf 提示 (Liu Yue)
- Loadmill (Loadmill)
- UUID 生成器 (ludwhe)
- CSS 格式化程序 (Martin Aeschlimann)
- SnowScript JS (Mauricio Rojas)
- HLASM 浏览器开发 (mbali)
- 模板字符串转换器 (meganrogge)
- Micro Focus COBOL (Micro Focus)
- Micro Focus Enterprise (Micro Focus)
- 光标对齐 (Mike Moore)
- 光标修剪 (Mike Moore)
- 多光标搜索 (Mike Moore)
- numeric (neal.bkn)
- Toast (Nick Bradley)
- steris (numso)
- N/A (Orta)
- Wurst 语言支持 (peterzeller)
- 显示标志 (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)
- 霓虹深色主题 (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 添加进度指示器 PR #136969
- 设置描述中缺少单词(修复 #137027) PR #137028
- 避免帐户静默登录中范围和 commandId 冲突(修复 #137601) PR #137613
- @grandeljay (Jay):从 PHP 语句中删除括号 PR #137447
- @Gvozd (Gvozd): 133348 修复在编辑器中打开搜索时出现的 OOM(内存溢出)问题 PR #136554
- @jeanp413 (Jean Pierre)
- 修复远程终端错误:未找到命令 $setUnicodeVersion PR #136171
- 修复远程终端标题在重新加载后无法恢复的问题 PR #136176
- 修复错误:重命名终端标签页时无法运行递归拼接 PR #136177
- 修复手动构建 VS Code 服务器时文件缺失的问题 PR #137570
- @jherchen (Johannes Herchen): 修复预安装脚本 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: #修复: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): 将 Markdown 中图片的 href 从 file 更改为 vscode-file PR #136687
- @SeriousBug (Kaan Genç): 允许扩展禁用内置的 Markdown 预览按钮 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: 添加了换行符图标 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 仓库时出现 fetch 错误 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): 修复网站 Playground 中的一些错误 PR #2779
- @MasterOdin (Matthew Peveler)
- @milahu: 修复到 monaco.d.ts 的链接 PR #2769
- @Pranomvignesh (Pranom Vignesh): 文档中的语义 Token 提供程序示例已损坏 PR #2764
- @rramo012 (Rafael Ramos): 修复文档链接 PR #2748