2022 年 2 月 (版本 1.65)
更新 1.65.1:此更新解决了这些安全问题。
更新 1.65.2:此更新解决了这些问题。
下载:Windows: x64 Arm64 | Mac: 通用 Intel Apple 芯片 | Linux: deb rpm tarball Arm snap
欢迎使用 Visual Studio Code 2022 年 2 月版。
- 新增编辑器历史导航功能 - 将“返回/前进”历史记录范围限定到编辑器组或单个编辑器。
- 浅色高对比度主题 - 用于增强 VS Code 编辑器可见性的浅色主题。
- 新增音频提示 - 针对警告、行内建议和断点命中的音频提示。
- 拖放问题和搜索结果 - 将结果拖到新的或现有的编辑器组。
- 源代码管理差异编辑器管理 - 在 Git 操作后自动关闭差异编辑器。
- 调试器惰性变量评估 - JavaScript/TypeScript 属性获取器的惰性评估。
- 预览:终端 Shell 集成 - 重新运行终端命令,命令状态装饰。
- Web 版 VS Code - 重新打开最近的本地文件和文件夹,改进了 Git 集成。
如果你想在线阅读这些发行说明,请访问 code.visualstudio.com 上的更新页面。
工作台
新增编辑器历史导航功能
VS Code 中的编辑器历史导航功能驱动了一些常用命令,例如 Go Back(返回)和 Go Forward(前进)。随着时间的推移,为了改进此功能并增加更多功能,积累了大量的特性请求。这个里程碑版本中,编辑器历史导航功能从头开始重写,以解决这些请求中的大部分。
编辑器组感知导航
在编辑器历史中导航时,现在会考虑编辑器组。在编辑器历史中向前和向后导航将激活并聚焦到与之前完全相同的编辑器组中的编辑器。当编辑器组被移除时,所有相关的历史条目都将被丢弃。
在下面的短视频中,第一个 Go Back(返回)将光标放置在新编辑器组中,然后第二个 Go Back(返回)导航返回到原始编辑器组。
主题:GitHub Light
限制导航范围到编辑器组或编辑器的新设置
一个新设置 `workbench.editor.navigationScope` 使得将编辑器历史导航范围限定为仅活动编辑器组甚至编辑器成为可能。支持的值有:
- `default`:编辑器导航适用于所有打开的编辑器组和编辑器。
- `editorGroup`:编辑器导航仅限于活动编辑器组中打开的编辑器。
- `editor`:编辑器导航仅限于活动编辑器。
如果将范围配置为 `editorGroup` 或 `editor`,则每个编辑器组或编辑器将拥有自己的导航堆栈,可以单独导航。
笔记本支持
您现在可以在任何笔记本中已选定的单元格之间导航。导航功能跨编辑器工作,就像您可以在文本编辑器中在光标位置之间导航一样。
主题:GitHub Light
导航编辑或导航位置的新命令
默认情况下,每当您在编辑器之间导航时,以及在编辑器内导航时(例如,切换笔记本单元格或更改文本编辑器中的选择时),都会添加编辑器导航位置。如果您觉得记录的位置过多,则已添加新命令,可将位置减少到:
- 导航位置 - 例如,在使用 Go to Definition(转到定义)时。
- 编辑位置 - 每当编辑器更改时。例如,在文本编辑器中输入时。
您可以将自己喜欢的按键绑定分配给这些命令,以相应地更改您的导航。
编辑位置的命令
- `workbench.action.navigateForwardInEditLocations` - 在编辑位置向前导航。
- `workbench.action.navigateBackInEditLocations` - 在编辑位置向后导航。
- `workbench.action.navigatePreviousInEditLocations` - 在编辑位置导航到上一个。
- `workbench.action.navigateToLastEditLocation` - 转到上次编辑位置(此命令以前就已存在)。
导航位置的命令
- `workbench.action.navigateForwardInNavigationLocations` - 在导航位置向前导航。
- `workbench.action.navigateBackInNavigationLocations` - 在导航位置向后导航。
- `workbench.action.navigatePreviousInNavigationLocations` - 在导航位置导航到上一个。
- `workbench.action.navigateToLastNavigationLocation'` - 转到上次导航位置。
已添加关联的上下文键,以使分配键绑定更加强大。
编辑位置的上下文键
- `canNavigateBackInEditLocations` - 是否可以在编辑位置向后导航。
- `canNavigateForwardInEditLocations` - 是否可以在编辑位置向前导航。
- `canNavigateToLastEditLocation` - 是否可以转到上次编辑位置。
导航位置的上下文键
- `canNavigateBackInNavigationLocations` - 是否可以在导航位置向后导航。
- `canNavigateForwardInNavigationLocations` - 是否可以在导航位置向前导航。
- `canNavigateToLastNavigationLocation` - 是否可以转到上次导航位置。
新的布局控制选项
在上一个里程碑版本中,我们在标题栏中引入了实验性的布局控件(通过将 `workbench.experimental.layoutControl.enabled` 设置为 `true` 启用)。我们收到反馈称,虽然控件中的操作很有用,但它们需要过多的点击。因此,我们正在添加几个 UI 选项,供大家使用设置 `workbench.experimental.layoutControl.type` 进行尝试。此设置具有以下选项:
- `menu`:以前的行为,带有一个打开菜单的按钮(默认)。
- `toggles`:一个新选项,显示三个按钮用于切换面板、侧边栏和侧边面板。
- `both`:一个新选项,显示切换按钮,然后是菜单按钮,这仍然允许您相当快速地访问自定义布局快速选择器。
下图显示了将 `layoutControl.type` 设置为 `both`,以显示三个切换按钮以及菜单下拉列表。
浅色高对比度主题
已添加新的浅色高对比度主题,以提高编辑器的易读性和可读性。
音频提示
此版本中新增了音频提示,包括警告、行内建议和调试器断点命中的音频提示。声音已进行调整,并且已弃用通用设置 `audioCues.enabled`,转而使用单独的 `audioCues.*` 设置。
除了 `lineHasWarning` 之外,所有音频提示默认情况下都为屏幕阅读器用户启用(设置值为 `auto`)。
新的音频提示命令 帮助:列出音频提示 列出了所有可用的音频提示,允许您在列表中移动时听到每个音频提示,并查看当前启用了哪些提示。
拖放问题和搜索结果
您现在可以将问题、搜索或引用结果拖放到编辑器中,打开文件并显示结果位置。如果您想启动一个新的编辑器组或将结果拖放到现有的编辑器组中,这会很有用。
设置编辑器分屏视图
“设置编辑器”现在使用可调节的分屏视图将目录与设置列表分开。
改进了自动语言检测
当新设置 `workbench.editor.historyBasedLanguageDetection` 启用时,无标题编辑器将使用改进的自动语言检测算法,该算法会考虑您的编辑器历史记录和当前工作区的内容。新算法所需的文本输入比以前少得多,即可提供检测结果。
以下是在 JavaScript、TypeScript、Markdown、Python、PHP 和 C++(支持更多语言)中使用此功能的示例。
主题:GitHub Light + HC Customizations
改进了语言扩展推荐
语言特性扩展推荐现在在推荐时会考虑 Marketplace 中的其他著名语言扩展。例如,如果您已安装 Apache NetBeans Java 扩展,VS Code 将不会推荐 Java 扩展包。
扩展树悬停的键盘快捷方式
您可以使用键盘快捷方式 Ctrl/Cmd+K, Ctrl/Cmd+I
来触发由扩展贡献的自定义树视图中的悬停显示。
编辑器
使用代码片段环绕
有一个新命令可以使用代码片段环绕当前选择。选择一些文本,从命令面板(⇧⌘P (Windows, Linux Ctrl+Shift+P))调用 使用代码片段环绕 命令,然后从下拉列表中选择一个代码片段。
在下面的短视频中,选定的方法被 try/catch 代码片段环绕。
任何使用 TM_SELECTED_TEXT
或 SELECTION
变量的适用代码片段都将在 使用代码片段环绕 快速选择下拉列表中可用。自定义用户或项目代码片段也包括在内。
可访问的行内提示
行内提示在源代码中显示附加信息,例如变量的推断类型。对于屏幕阅读器用户,有一个新命令可以帮助使用此功能。从命令面板中选择 使用行内提示读取行,编辑器将交错读取当前行及其提示。
上下文 Unicode 突出显示
为了减少误报,如果周围字符在视觉上指示为非 ASCII 脚本,则不再突出显示模糊和不可见的 Unicode 字符。因此,在受信任的工作区中,仅突出显示不可见或可能与 ASCII 字符混淆的字符。例外情况是那些包含在非 ASCII 字符单词中的字符,其中至少一个字符不能与 ASCII 字符混淆。
之前,您可以在 const 字符串中看到多个误报
之后,只有令人困惑的字符被突出显示
终端
多行粘贴警告
当 shell 不支持多行粘贴时,在终端中粘贴多行时现在默认会显示一个对话框。当我们将 Ctrl+V
直接交给 shell 时,此警告会显示在括号粘贴模式和 PowerShell 中。对话框上有一个 不再询问我 复选框,可以轻松禁用此功能。
终端链接改进
本次发布中,终端链接的实现进行了大规模重构。这简化并提高了该功能的可维护性,同时也带来了:
- 链接高亮再次起作用。
- 缓存已解析的链接,减少某些链接显示时的延迟。
- 工作区搜索 链接现在由与已验证链接相同的代码处理,以提高一致性并改进行/列识别。
- 若干错误修复。
打开文件链接命令改进
上个版本引入的 打开上次文件链接 和 打开检测到的链接... 命令现在排除了文件夹,这应该会使它们更有用。
源代码管理
差异编辑器管理
在这个里程碑版本中,我们对差异编辑器的管理做出了改进。命令面板中新增了一个命令 Git: Close All Diff Editors(Git:关闭所有差异编辑器),可用于关闭所有打开的差异编辑器。还有一个新设置 `git.closeDiffOnOperation`,用于在暂存、提交、丢弃、暂存或取消暂存更改时自动关闭差异编辑器。
Git 命令输出日志记录
执行 Git 命令时,`stderr` 的内容会记录在Git 输出窗口中。有一个新设置 `git.commandsToLog`,用于指定将 `stdout` 内容记录在Git 输出窗口中的 Git 命令列表。
调试
惰性变量
访问变量的值可能会产生副作用或开销较大。VS Code 的通用调试器现在可以显示一个按钮,供用户按需获取变量值。这适用于支持新的“惰性”变量功能的调试扩展。目前,此功能仅由内置 JavaScript 调试器实现了属性获取器,但我们预计其他调试器扩展也将很快跟进。
任务
有一个新的平台无关的 `userHome` 变量,您可以在任务中使用。
{
"label": "Test Home",
"type": "shell",
"command": "ls ${userHome}"
}
笔记本
内置输出渲染器更新
我们已将文本、图像、HTML 和代码渲染器从 VS Code 核心移至内置输出渲染器扩展。通过此更改,VS Code 现在可以在这些输出类型上搜索文本。
在下面的短视频中,搜索 `item` 最初在代码单元格中有 3 个结果,但可以筛选以同时包含单元格输出。
粘性滚动笔记本单元格按钮
向下滚动代码单元格时,运行 按钮和单元格工具栏现在将粘在屏幕顶部。这使得在长代码单元格中工作时它们更易于访问。
主题:Dracula
语言
TypeScript 4.6
VS Code 现在附带 TypeScript 4.6。此更新带来了许多新的语言功能、工具改进和错误修复。您可以在TypeScript 博客上阅读有关 TypeScript 4.6 的更多信息。
JavaScript 文件中的语法错误报告
借助 TypeScript 4.6,VS Code 现在可以报告 JavaScript 文件中的一些常见语法错误。这包括解析错误,以及块作用域变量的无效重新声明。
以前,只有当您在 JavaScript 中启用语义检查时才会报告这些错误。
您可以通过设置以下项来禁用此错误报告:
"javascript.validate.enable": false
更多 JS/TS 设置可以按语言配置
现在,更多的 JavaScript 和 TypeScript 设置可以配置为语言特定设置。例如,如果您想为 javascript
和 javascriptreact
使用不同的设置,语言特定设置会很有用。
新的语言特定启用设置包括:
javascript.preferences.quoteStyle
,typescript.preferences.quoteStyle
javascript.preferences.importModuleSpecifier
,typescript.preferences.importModuleSpecifier
javascript.preferences.importModuleSpecifierEnding
,typescript.preferences.importModuleSpecifierEnding
javascript.preferences.jsxAttributeCompletionStyle
,typescript.preferences.jsxAttributeCompletionStyle
javascript.preferences.renameShorthandProperties
,typescript.preferences.renameShorthandProperties
javascript.preferences.useAliasesForRenames
,typescript.preferences.useAliasesForRenames
javascript.suggest.enabled
,typescript.suggest.enabled
javascript.suggest.completeJSDocs
,typescript.suggest.completeJSDocs
javascript.suggest.jsdoc.generateReturns
,typescript.suggest.jsdoc.generateReturns
javascript.autoClosingTags
,typescript.autoClosingTags
新的 Lua 语法高亮文法
VS Code 有了一个新的、维护更好的 Lua 文法,用于 Lua 文件的语法高亮显示。新文法正在积极维护中,修复了旧文法中存在的问题,并支持较新的 Lua 令牌。
Web 版 VS Code
重新打开本地文件和文件夹
当您使用支持Web 文件系统访问 API 的浏览器访问 vscode.dev 或 insiders.vscode.dev 时,现在可以查看最近打开的本地文件和文件夹列表。选择本地文件将在编辑器中打开它,选择本地文件夹将更新文件资源管理器以显示其内容。在显示内容之前,浏览器可能会要求您确认本地文件访问权限。
远程存储库
GitHub 存储库
在这个里程碑版本中,当在 vscode.dev 和 github.dev 上编辑 GitHub 存储库时,合并冲突解决方案得到了改进。您的编辑器中现在有合并冲突装饰,并提供 接受当前更改、接受传入更改 或 接受双方更改 的选项。
源代码管理视图中还为包含合并冲突的文件提供了 暂存更改 操作。
此外,您现在可以在 vscode.dev 和 github.dev 上的 GitHub 存储库中轻松暂存和取消暂存特定文件夹下的所有更改。为此,请右键单击源代码管理视图并选择 作为树形图查看。
主题:One Monokai
工作区搜索和 查找所有引用 现在默认会下载并索引存储库的完整副本,而不是像以前那样默认提供部分结果。
有几个设置可以配置此索引功能:
remoteHub.indexing.verboseDownloadNotification
- 控制下载通知是显示为弹出窗口(默认)还是在状态栏中显示。remoteHub.indexing.maxIndexSize
- 控制要下载的索引的大小限制。如果超出此限制,下载将被取消,并提供部分结果。您可以将此设置留空,以便从不下载存储库并始终使用部分结果。
Azure Repos
在这个里程碑版本中,我们已将 Azure Repos 支持从使用特定的 Azure DevOps 身份验证提供程序切换为使用通用的 Microsoft 身份验证提供程序(由设置同步使用)。当您访问 Azure Repo 时,系统将再次提示您登录,但您所有已保存的更改都将保留。
对扩展的贡献
十六进制编辑器数据检查器改进
以前,十六进制编辑器扩展始终在侧边栏中显示其数据检查器,并在显示十六进制编辑器时显示它。然而,一些用户觉得这很烦人,并且它与调试器的内存检查器的集成导致了特别具有干扰性的体验。现在,数据检查器将显示在被检查字节的右侧。如果编辑器太窄,数据检查器将改为显示在悬停小部件中。
主题:Codesong
这可以通过 `hexeditor.inspectorType` 设置进行配置,该设置可以取以下三个值之一:
- `aside` - 将数据检查器显示在侧面。
- `hover` - 仅在悬停时显示数据检查器,无论编辑器宽度如何。
- `sidebar` - 像以前一样在侧边栏中显示数据检查器。
GitHub 拉取请求和问题
GitHub 拉取请求和问题扩展的工作仍在继续,该扩展允许您处理、创建和管理拉取请求和问题。查看该扩展的 0.38.0 版本更新日志以了解亮点。
预览功能
终端 Shell 集成
终端中的 Shell 集成最初是在上一个版本中引入的,本月又有了许多改进。回顾一下,此功能允许 VS Code 更深入地了解终端内部发生的情况,这在以前很大程度上是未知的。该功能仍被认为是实验性的,您可以通过 `terminal.integrated.shellIntegration.enabled` 设置选择启用。
本次发布最大的变化是,Shell 集成检测到的命令现在在左侧的“gutter”(装订线)中具有装饰。命令装饰在视觉上分隔缓冲区,并提供对使用 Shell 集成功能的信息和操作的访问。命令装饰有三种类型:错误、成功和默认,由命令的退出代码决定。
单击装饰会在菜单中显示特定于该命令的操作,目前包括 重新运行命令 和 复制输出。
将鼠标悬停在装饰上会显示有关命令的信息,例如自运行以来的时间以及关联的退出代码。
通过将 `terminal.integrated.shellIntegration.decorationsEnabled` 设置为 `false` 可以禁用装饰。可以通过 `terminal.integrated.shellIntegration.decorationIcon*` 设置配置单个图标,这些新的主题键设置颜色:
terminalCommandDecoration.successBackground
terminalCommandDecoration.errorBackground
terminalCommandDecoration.defaultBackground
其他主要更改如下:
- 启用设置已重命名为 `terminal.integrated.shellIntegration.enabled`。
- 在所有受支持的 Shell 中启用 Shell 集成的机制现在更可靠。
- 现在,在使用远程连接窗口(SSH、WSL、容器)时,Shell 集成应该可以正常工作。
- 行继续符(例如 `PS2`)现在应该在所有受支持的 Shell 上工作。
- “跳过”的命令现在会特别标记。例如,在使用 `Ctrl+C` 或运行空命令之后。
- 运行最近命令 和 转到最近目录 命令现在会在会话之间存储历史记录。历史记录存储可以通过 `terminal.integrated.shellIntegration.history` 设置进行配置。
ESLint
ESLint 扩展初步支持包含可用 ESLint 验证的单元格的笔记本文档。此支持仅在扩展的预发布版本中可用。
扩展开发
语言状态项
我们已完成语言状态项的 API。此 API 显示活动编辑器的语言特定信息。这可以是有关项目或工具集版本的常规信息,也可以显示错误和警告。
该 API 类似于状态栏 API,可以通过 vscode.languages.createLanguageStatusItem(...)
访问。语言状态项应使用文档选择器创建,以便 VS Code 可以在活动编辑器更改时显示和隐藏它。
行内提示
行内提示提供程序 API 现已定稿。它允许在源代码中嵌入附加信息。下图显示了 TypeScript 如何为推断类型添加行内提示。
该 API 围绕 InlayHintsProvider
构建。它提供了 InlayHint
对象,这些对象具有一些有趣的特性:
- 行内提示可以有工具提示和命令。
- 提示的标签可以由多个部分组成,这些部分又可以有工具提示和命令。
- 标签部分还可以具有关联的源位置,从而为此部分启用语言功能,例如 转到定义。
状态栏焦点边框
通过为状态栏和状态栏项添加焦点边框,我们使状态栏导航变得更轻松、更易于访问。
主题作者可以通过配置两个新的主题颜色来自定义边框颜色:
statusBar.focusBorder
:状态栏在获得焦点时的整个边框颜色。statusBarItem.focusBorder
:状态栏项在获得焦点时的边框颜色。
测试刷新操作和 sortText
我们已经最终确定了我们的提案,即向 TestController
接口添加一个标准刷新处理程序。如果扩展为此属性分配了一个方法,VS Code 将在测试资源管理器视图中显示一个“刷新”图标。
此外,TestItem
现在可以具有一个 sortText
属性,该属性控制文件中没有特定位置的项的排序顺序。
评论时间戳
评论 API 现在允许您为每个 Comment
添加一个 timestamp
。此时间戳显示在评论小部件和评论视图中。默认情况下,时间戳显示为相对时间(例如,“2 周前”),但用户设置 comments.useRelativeTime
可用于显示精确时间。时间戳的悬停始终是精确时间。
vscode-test 包重命名为 @vscode/test-electron
vscode-test
包已重命名为 @vscode/test-electron
。如果扩展作者在其扩展的 package.json
文件 devDependencies
中包含了该包,则应更新该条目。@vscode/test-electron 包有助于运行 VS Code 扩展的集成测试。您可以在 vscode-test 存储库中了解更多信息。
更新了 codicons
以下新图标已添加到我们的 codicon 库中:
arrow-circle-down
arrow-circle-left
arrow-circle-right
arrow-circle-up
error-small
indent
layout-activitybar-left
layout-activitybar-right
layout-centered
layout-menubar
layout-panel-center
layout-panel-justify
layout-panel-left
layout-panel-right
layout-panel
layout-sidebar-left
layout-sidebar-right
layout-statusbar
layout
newline
record-small
target
图标贡献点现已最终确定
图标贡献点允许扩展通过 ID 定义一个新图标,以及一个默认图标。然后,该图标 ID 可以由扩展(或任何依赖该扩展的其他扩展)在任何可以使用 ThemeIcon
的地方使用 new ThemeIcon("iconId")
、Markdown 字符串 ($(iconId)
) 中,以及作为某些贡献点中的图标。
产品图标主题可以重新定义图标(如果它们知道图标 ID)。
"contributes": {
"icons": {
"distro-ubuntu": {
"description": "Ubuntu icon",
"default": {
"fontPath": "./distroicons.woff",
"fontCharacter": "\\E001"
}
},
"distro-fedora": {
"description": "Ubuntu icon",
"default": {
"fontPath": "./distroicons.woff",
"fontCharacter": "\\E002"
}
}
}
}
在上面的示例中,一个扩展定义了两个新的图标 ID distro-ubuntu
和 distro-fedora
,以及默认图标定义。这些图标是在给定字体字符的图标字体中定义的。
文件图标主题:支持文件关联中的文件夹名称
在文件图标主题中,folderNames
、folderNamesExpanded
、fileNames
和 fileExtensions
中的关联现在也可以包含文件夹名称:
"fileNames": {
"system/win.ini": "_win_ini_file"
},
system/win.ini
表示关联匹配 system
文件夹中名为 win.ini
的文件。
"fileExtensions": {
"system/ini": "_ini_file"
},
system/ini
表示关联匹配 system
文件夹中名为 *.ini
的文件。
"folderNames": {
".vscode/extensions": "_vscode_folder"
},
在 Web 版 VS Code 中使用 Codespaces 运行远程安装的 Web 扩展
Web 版 VS Code 与 Codespaces 现在支持在 Web 扩展主机中运行远程安装的Web 扩展。例如,如果您在 GitHub Codespace 中安装了 Vim 扩展(通过 devcontainer.json
文件中的配置),那么当您在浏览器中打开 codespace 时,Vim 将加载到 Web 扩展主机中。请阅读我们的扩展主机文档以获取更多信息。
注意: 目前,此类扩展加载 Web worker 存在已知限制。有关详细信息,请参阅此问题。
调试器扩展开发
支持“重要”输出事件
最近,调试适配器协议新增了 Output
事件的 important
类别。此类别标记应引起用户注意且不应被忽视的事件。VS Code 现在将显示包含 important
类别消息的通知弹出窗口。它们仍将记录到调试控制台。
支持“惰性”变量
某些变量是动态的,需要执行代码才能获取其值。调试适配器可能不希望自动检索它们的完整值,因为这样做可能会产生副作用或开销较大。
一些调试适配器通过将“开销大的变量”表示为占位符对象来解决此问题,用户需要显式“展开”该对象才能获取其值。VS Code 的内置 js-debug 对 JS/TS 获取器使用了这种方法:
class Person {
name = 'Danny';
get email(): string {
return 'foo@example.bar';
}
get address(): Address {
return new Address();
}
}
class Address {
street = 'Main Street';
city = 'Zurich';
}
以下截屏视频显示,中间对象使得难以理解有效数据结构
在此版本中,我们改进了 VS Code,使其以紧凑形式渲染中间对象,并带有 (...) 按钮,用于请求完整值。
调试适配器可以通过添加带有 lazy
属性的 VariablePresentationHint
来请求此变量的新演示样式(请参阅 DAP 添加)。如果客户端不支持 lazy
标志,则变量将像以前一样显示。
语言服务器协议
语言服务器协议的下一个版本以及相应的 npm 模块已发布。新版本包含以下更改:
- LSP 类型到 VS Code 类型以及反向的转换现在是完全异步的。此更改避免了大量数据流的转换,这可能会阻塞扩展主机。请注意,这是库中的一个破坏性 API 更改(更多信息请参阅README.md)。它不影响协议本身的向后兼容性。
- 笔记本文档的拟议实现得到了增强。它现在拥有完整的中间件和提供程序支持。
调试适配器协议
调试适配器协议中添加了几个新属性。
VariablePresentationHint
中添加了新的布尔属性lazy
。客户端可以使用此可选标志以支持特定手势来获取其值的 UI 呈现变量。CompletionItem
中添加了新的可选字符串属性detail
。通过此人类可读的字符串,客户端可以显示有关项的附加信息,例如类型或符号信息。请注意,VS Code 尚未支持此属性。
建议的扩展 API
每个里程碑版本都会有新的建议 API,扩展作者可以尝试它们。一如既往,我们希望收到您的反馈。以下是尝试建议 API 的步骤:
- 找到您想要尝试的提案,并将其名称添加到
package.json#enabledApiProposals
。 - 使用最新的 vscode-dts 并运行
vscode-dts dev
。它将把相应的d.ts
文件下载到您的工作区中。 - 您现在可以针对该提案进行编程。
您不能发布使用建议 API 的扩展。下一个版本中可能会有破坏性更改,我们绝不希望破坏现有扩展。
时间轴项中的 Markdown 悬停
TimelineProvider
提供的项现在可以在 detail
属性中支持 Markdown,该属性用于提供其工具提示的内容。
笔记本感知文档选择器
vscode.DocumentSelector
类型允许您将 Go to Definition(转到定义)等语言功能与特定文档关联起来。这驱动了 UI,也决定了是否向相应的提供程序请求结果。我们添加了一个新的 API 提案,允许扩展也选择笔记本类型。例如,{ language: 'python', notebookType: 'jupyter-notebook'}
定位所有嵌入在 Jupyter 笔记本中的 Python 文档。这是当前的提案 - 尝试一下,告诉我们您的想法。
具有自定义语言 ID 的输出通道
有些扩展能够在其输出通道中定义令牌或语法着色以及 CodeLens 功能,因为它们本身是文本文档(只读)。由于所有输出通道共享相同的语言 ID,这些自定义可能会错误地应用于其他输出通道。有一个功能请求是创建具有自定义语言 ID 的输出通道,以便扩展作者可以按语言定义自定义。因此,在此里程碑版本中,我们引入了创建具有自定义语言 ID 的输出通道的提案。请尝试一下并给我们反馈。
MarkdownString.baseUri
MarkdownString
上拟议的 baseUri
属性允许您指定一个基本 URI,Markdown 中的相对链接和图像将相对于该基本 URI 解析。此属性的行为与 HTML 中的 <base>
元素非常相似。
如果 baseUri
以 /
结尾,则将其视为目录,Markdown 中的相对路径将相对于该目录解析。
const md = new vscode.MarkdownString(`[link](./file.js)`);
md.baseUri = vscode.Uri.file('/path/to/dir/');
// Here 'link' in the rendered Markdown resolves to '/path/to/dir/file.js'
如果 baseUri
是文件,则 Markdown 中的相对路径将相对于该文件的父目录解析。
const md = new vscode.MarkdownString(`[link](./file.js)`);
md.baseUri = vscode.Uri.file('/path/to/otherFile.js');
// Here 'link' in the rendered Markdown resolves to '/path/to/file.js'
新文档
Java GUI 应用程序
新的Java GUI 应用程序主题解释了如何使用Java 扩展包在 VS Code 中开发 JavaFX、AWT 和 Swing 应用程序。
显著修复
- 107748 语音朗读无法识别设置被忽略以进行同步
- 123399 Emmet 未在 jsx 和 html 文件中添加带有 A 标签的类。
- 141680 在设置中搜索 @tags 速度慢
- 141977 设置编辑器:文件夹操作项未正确处理 keyup 事件
- 142040 改进支持预发布版本的扩展的“安装另一个版本”操作。
- 142462 当写锁未清除时,文件写入可能挂起
- 142641 ts-node 调试器在 v1.64 中无法正常工作
感谢
最后但同样重要的是,对 VS Code 的贡献者们说一声衷心的感谢。
Web 扩展
允许扩展作为Web 扩展运行代码的扩展作者(以下列表是 2022 年 2 月 1 日至 2022 年 2 月 28 日之间)
- Var Style (allen)
- helloworld-web-sample (Andrey Belym)
- asciidoctor.asciidoctor-vscode (asciidoctor)
- Gitignore Adder (beatrix)
- gkauthentication-test (BranchCreation SLU)
- Racket Helpers (Calvin-LL)
- PHP Tools (DEVSENSE)
- Naninovel (Elringus)
- Pitoco Extension (Feodrippe)
- feodrippe.feodrippe-helloworld-minimal-sample-test-web (Feodrippe)
- Simple React Snippets for Typescript (Giovanni Fu Lin)
- GitKraken Authentication (GitKraken)
- groog (groogle)
- ModalKeys (haberdashPI)
- VDM VSCode (Jonas Rask)
- cis-algorithm (kimjihu)
- Markdown (Pandoc Flavored) (Kolen Cheung)
- zyname - this is for testing and will be deleted soon (leodevbro)
- Snippet Copy (Lukas Spieß)
- PHP import checker (Marabesi)
- VSCode Language JSONata (Markus Gutbrod)
- Babel JavaScript (Michael McDermott)
- Create Project (Public Theta)
- Dynamic Theme (Rody Davis)
- Router Generator (Rody Davis)
- Chimera Theme (roydukkey)
- Qiita Markdown Preview (Ryoji Kato)
- Kestrel (SenseTime)
- Test token (sevillal)
- Sourcegraph (Sourcegraph)
- Rewrap (stkb)
- wav-preview (sukumo28)
- Pandoc (TANIGUCHI Masaya)
- Hex Viewer (Tao Cumplido)
- Time Link Bundle (Web version) (Time Link)
- DCC Websocket (virgilsisoe)
- VSC+ (Vrej)
问题跟踪
对我们问题跟踪的贡献
- John Murray (@gjsjohnmurray)
- Andrii Dieiev (@IllusionMH)
- ArturoDent (@ArturoDent)
- Simon Chan (@yume-chan)
拉取请求
对 vscode
的贡献
- @aminya (Amin Yahyaabadi):修复:简化 tasks/common 中的正则表达式 PR #142899
- @Balastrong (Leonardo)
- 增加了重载计数器工具提示的透明度 PR #141828
- 通过在必要时解码前后检查片段来修复元素检测 PR #141848
- @BMBurstein (Baruch):修正括号引导设置的描述 PR #143722
- @Bruce-Hopkins (Bruce Hopkins):添加用户主目录变量 PR #141902
- @caioagiani (Caio Agiani):修复拼写错误 PR #141959
- @CGNonofr (Loïc Mangeonjean)
- 在所有语言特性注册函数中用 languageSelector 替换 languageId PR #143610
- 允许 getWorker 函数返回一个 Promise PR #143611
- @ChaseKnowlden:更新 Lua 语法 PR #142107
- @divinity76:root 似乎需要 --no-sandbox PR #137125
- @efcoyote (coyote):更新到最新的 seti-ui 版本 PR #141931
- @enticies (enticies):修复错误消息拼写错误 PR #142054
- @g-plane (Pig Fang):将 "pnpm-lock.yaml" 添加到默认文件嵌套模式 PR #142375
- @gjsjohnmurray (John Murray)
- 向 window.createOutputChannel API 添加可选的 languageId (#_19561) PR #140876
- 修复
testing.openTesting
设置文本 (#_142306) PR #142314
- @haykam821:防止图像预览透明背景受缩放影响 PR #141667
- @heartacker:添加数学代码片段 PR #142697
- @icepaq (Anton):WebviewPanel 上的自动完成激活事件 PR #141752
- @jeanp413 (Jean Pierre)
- 修复 WebviewElement::streamToBuffer PR #142288
- 修复在扩展视图中按 ID 查询扩展时,扩展编辑器始终渲染稳定版本的问题 PR #143481
- @JJRcop (Jonathan Rubenstein):将 VS 2022 添加到支持版本 PR #142667
- @LuanVSO (Luan Vitor Simião Oliveira)
- 修复 psreadline 无法与 shell 集成配合使用的问题 PR #142211
- 修复 shellintegration.ps1 PR #142217
- @michaelkuhn (Michael Kuhn):修复部分 Solarized 颜色 PR #142670
- @neeleshb (Neelesh Bodas):修复“转到上一个问题”的错误标签 PR #143823
- @satokaz (Kazuyuki Sato):解码 Markdown 路径智能感知中的头建议 PR #142392
- @SNDST00M (M.U.N.I.N):在文件图标主题中添加可选目录语法 PR #140079
- @stefanhaller (Stefan Haller):修复 #142028 PR #142930
- @surajteggi:修复拼写错误 PR #142185
- @thebinarysearchtree (Andrew Jones):修复缩进 PR #141997
- @weartist (Han):在 VSCode 终端中实现 multiLinePasteWarning,修复 #122683 PR #141822
- @y-tsutsu (y-tsutsu)
- 命令面板中同时显示翻译名称和原始名称。 PR #142524
- 修复操作类别 PR #142911
- @Yash621 (Yash Goel):修复设置同步有重复登录的问题 PR #142340
- @zardoy (Vitaly):解析 tsconfig.extends 的正确链接路径 PR #141062
对 vscode-css-languageservice
的贡献
对 vscode-languageserver-node
的贡献
- @dsherret (David Sherret):功能:当 childProcess.spawn 失败时提供更具描述性的错误 PR #888
对 debug-adapter-protocol
的贡献
- @apupier (Aurélien Pupier):添加 Apache Camel 的调试适配器 PR #245
- @eshelyaron (Eshel Yaron):将 SWI-Prolog DAP 实现添加到 adapters.md PR #248
- @hyangah (Hyang-Ah Hana Kim):更新 sdks.md * 包含 go-dap PR #241
- @lukaszsamson (Łukasz Samson):添加 Elixir DAP 实现链接 PR #243
- @Ricbet (John):将 OpenSumi 添加到实现工具 PR #247
对 language-server-protocol
的贡献
- @zwpaper (Wei Zhang):使用语言 ID 保持一致性 PR #1409
对 monaco-editor
的贡献
- @Dan1ve (Daniel Veihelmann):使 Vite 示例代码与 Firefox 兼容 PR #2991
- @philipturner (Philip Turner):向 Swift 添加 `noDerivative` 修饰符 PR #2957