2022 年 4 月(1.67 版本)
1.67.1 更新:此更新解决了此安全问题。
1.67.2 更新:此更新解决了这些问题。
下载:Windows:x64 Arm64 | Mac:通用 Intel 硅芯片 | Linux:deb rpm tarball Arm snap
欢迎使用 Visual Studio Code 2022 年 4 月版。此版本中有许多更新,我们希望您会喜欢,其中一些主要亮点包括
- 资源管理器文件嵌套 - 在资源管理器中将生成的文件嵌套在源文件下。
- 设置编辑器筛选器 - 筛选器按钮会弹出诸如 @已修改设置之类的搜索
- 括号对着色 - 彩色括号对现在默认启用。
- 切换内嵌提示 - Ctrl+Alt 可在编辑器中快速隐藏或显示内嵌提示。
- 拖放创建 Markdown 链接 - 将文件拖放到编辑器中以创建 Markdown 链接。
- 在 Markdown 中查找所有引用 - 快速查找对标题、文件、URL 的所有引用。
- Java 扩展更新 - 现在支持内嵌提示和延迟变量解析。
- 扩展作者的 UX 指南 - VS Code 扩展 UI 最佳实践指南。
- 新的 Rust 语言主题 - 了解如何在 VS Code 中使用 Rust 编程语言。
如果您想在线阅读这些发行说明,请转到 code.visualstudio.com 上的更新。
观看发布派对:收听 VS Code 团队讨论一些新功能。您可以在我们的 YouTube 频道上找到该活动的录音。
亮点简述:如果您只有 60 秒,请查看4 月 VS Code 版本亮点视频,快速了解新内容。
内测人员:想尽快试用新功能吗?您可以下载每日内测人员版本,并尝试最新的可用更新。
工作台
资源管理器文件嵌套
资源管理器现在支持根据名称嵌套相关文件。有几个设置可以控制此行为
explorer.fileNesting.enabled
- 控制是否全局启用文件嵌套。可以全局设置或为特定工作区设置。explorer.fileNesting.expand
- 控制默认情况下是否展开嵌套文件。explorer.fileNesting.patterns
- 控制如何嵌套文件。默认配置为 TypeScript 和 JavaScript 项目提供嵌套智能,但我们鼓励您修改此配置以适合您自己的项目结构。一些例子
默认配置
当文件与目录的名称匹配时,在 index.ts
下嵌套("index.ts": "${dirname}.ts"
)
嵌套与另一个文件名称相同但添加了段的文件("*": "${basename}.*.${extname}"
)
文件嵌套已通过实验性设置提供了多个迭代。现在的行为大部分没有改变,除了文件操作。实验性设置 explorer.experimental.fileNesting.operateAsGroup
已被删除,改为在折叠时将嵌套视为一个组,但在其他情况下视为单个实体。这意味着,如果您想复制、剪切、拖动或删除整个嵌套的文件堆栈,您可以折叠嵌套,然后将其作为一个实体进行操作。当展开嵌套元素时,选择行为将像往常一样。
设置编辑器搜索筛选器按钮
“设置”编辑器的搜索控件现在右侧包含一个漏斗按钮。单击该按钮会显示一个筛选器列表,您可以将其应用于搜索查询,以便筛选出结果。
主题:浅粉色
设置编辑器语言筛选器指示器
当应用语言筛选器时,“设置”编辑器语言筛选器现在会更改范围文本,以更清楚地显示正在对哪个语言执行操作。上面的短视频显示了应用于已筛选设置的 Markdown 语言筛选器 (@lang:markdown
)。
作为参考,当应用语言筛选器时,修改设置的值只会修改该语言的该设置的值。特定于语言的设置在 settings.json
中通过语言标识符确定范围
"[markdown]": {
"editor.wordBasedSuggestions": "off"
}
在重构后保存文件
重构(如重命名)通常会修改多个文件,并使它们处于未保存的更改(脏)状态。外部开发工具通常要求保存这些文件。为了简化此工作流程,有一个新的设置 files.refactoring.autoSave
,默认为 true
,并控制是否应自动保存作为重构一部分的文件。
在编辑器限制中排除脏编辑器
一个新的设置 workbench.editor.limit.excludeDirty
控制打开编辑器的最大数量是否应排除脏编辑器以计入配置的限制。默认情况下禁用该设置 (false
)。
将“未提交的更改”恢复到时间线
当我们在上个月引入本地历史记录功能时,我们从 Git 时间线提供程序中删除了 未提交的更改 条目,因为它感觉有点多余。但是,一些用户认为此时间线条目具有实际价值,现在您可以通过相应地配置新的 git.timeline.showUncommitted
设置将其恢复。
当打开失败时,新的编辑器占位符
当编辑器未能打开时,VS Code 不再显示通知并显示上一个打开的编辑器。相反,会有一个通用的占位符,其中包含错误消息,在某些情况下,还会显示用于解决错误的操作。
语言状态改进
语言状态项现在显示格式化程序冲突 - 当安装了多种语言格式化程序,但没有一个配置为默认格式化程序时,就会发生这些冲突。此外,当包含严重状态时,语言状态项会更突出。
此外,当您的文档被怀疑为与当前设置不同的语言时,语言状态项现在将显示切换语言的提示。这仅适用于无标题的编辑器和笔记本单元格,并且可以使用 workbench.editor.languageDetectionHints
设置进行配置。下面在Handy Dandy Notebook中对此进行了演示,该笔记本支持以各种不同的语言执行单元格。
显示无效或不兼容的扩展
“扩展”视图现在在已安装扩展列表中显示无效或不兼容的扩展,并带有错误状态。例如,如果您的 VS Code 版本是 1.67.0-insider
,并且您安装了一个需要 VS Code 版本 1.68.0
的扩展,那么它将在列表中显示不兼容的错误状态。
退出前确认
可以配置新的设置 window.confirmBeforeClose
以在退出应用程序之前显示确认对话框。
您可以选择 keyboardOnly
以在使用键绑定时调出确认对话框,也可以选择 always
,即使在使用鼠标退出时也是如此。
注意:该设置并非全新,并且已在 Web 版 VS Code 中提供一段时间。
comments.openView 默认值
comments.openView
的旧默认值是 file
,这会导致每次打开包含注释的文件时都打开“注释”视图。为了使“注释”视图不那么嘈杂,新的默认值是 firstFile
,这会导致“注释”视图仅在会话期间第一次打开包含注释的文件时才打开。
多行注释
在幕后,自注释 UX 完成以来,VS Code 一直支持多行注释,但多行注释从未在 UI 中显示。您现在可以查看和留下多行注释。
在新窗口中处理 URI
每当 VS Code URI 包含查询参数 windowId=_blank
时,VS Code 将在新窗口中处理它。示例:vscode://vscode.git/clone?url=https%3A%2F%2Fgithub.com%2FMicrosoft%2Fvscode-vsce.git&windowId=_blank
。
编辑器
默认启用括号对着色
鉴于在1.60 版本中引入的新括号对着色功能获得了积极的反馈,我们默认启用了括号对着色。
可以通过将 "editor.bracketPairColorization.enabled"
设置为 false
来禁用括号对着色。
也可以仅为特定语言禁用括号对着色
"[typescript]": {
"editor.bracketPairColorization.enabled": false,
},
TextMate 语法可以将标记标记为不平衡
以前,TextMate 语法无法将某些括号标记为不平衡,例如 shell 脚本的 case 语句中的右括号
为了使括号对匹配和着色更加可靠,TextMate 语法贡献现在可以表达某些标记中的括号不应匹配。在扩展 package.json
的 contributes
部分中,提供的语法可以使用属性 balancedBracketScopes
(默认为 ["*"]
)和 unbalancedBracketScopes
(默认为 []
)来包含或排除括号匹配的范围。
"grammars": [{
"language": "shellscript",
"scopeName": "source.shell",
"path": "./syntaxes/shell-unix-bash.tmLanguage.json",
"balancedBracketScopes": [ "*" ],
"unbalancedBracketScopes": [ "meta.scope.case-pattern.shell" ]
}],
通过此功能,shell 脚本的语法现在可以指示 case 语句中的 )
不应被匹配。
新的括号匹配算法
括号匹配现在使用与括号颜色化相同的数据结构。这既提高了准确性,也提高了性能。
旧的括号匹配行为(请注意颜色和高亮装饰不匹配)
新的括号匹配行为
括号引导线改进
水平括号引导线现在可以正确支持换行。此外,仅跨越单行的括号对也会获得自己的水平括号引导线。
默认情况下禁用水平括号引导线,可以使用 "editor.guides.bracketPairsHorizontal": true
启用。
在此版本中,"editor.guides.highlightActiveIndentation"
现在接受值 "always"
。如果设置为 always
,即使已经存在活动的括号对,也会突出显示缩进引导线。
切换内嵌提示
内嵌提示是一种在源代码中直接显示额外信息的绝佳方式。但是,有时你只想看到实际的源代码。为了支持快速隐藏内嵌提示,editor.inlayHints.enabled
设置已更改:除了 on
和 off
之外,还有值 onUnlessPressed
和 offUnlessPressed
。on/offUnlessPressed
值在按下并按住 Ctrl+Alt
时隐藏或显示内嵌提示。
编辑器 › 内嵌提示:已启用值
on
- 启用内嵌提示。off
- 禁用内嵌提示。onUnlessPressed
- 使用Ctrl+Alt
显示和隐藏内嵌提示。offUnlessPressed
- 使用Ctrl+Alt
隐藏和显示内嵌提示。
改进的内联建议
上个月我们添加了使用 👻 幽灵文本(浅色)进行快速建议的功能。提醒:你需要为 editor.quickSuggestions
设置使用 inline
。我们在这方面做了一些改进工作,特别是现在支持触发字符和 TypeScript “使用参数完成函数”。
要在键入触发字符(如 .
)时禁用 IntelliSense,请设置 "editor.suggestOnTriggerCharacters": false
。要启用 TypeScript 函数调用补全,请使用 "typescript.suggest.completeFunctionCalls": true
。
将文本拖放到编辑器中
你现在可以将其他应用程序的文本拖放到文本编辑器中。例如,在 macOS 上,这允许你将表情符号面板中的表情符号拖放到文本编辑器中。
拖动时,虚线光标会显示文本将插入的位置。
终端
查找结果计数
在终端中搜索时,结果计数和当前选定的匹配索引现在显示在查找控件中。
源代码管理
源代码控制存储库视图
在这个里程碑中,我们引入了一个新设置 scm.repositories.sortOrder
,以控制 源代码控制存储库 视图中显示的存储库的默认排序顺序。存储库可以按照发现它们的顺序、名称和完整路径进行排序。可以使用 源代码控制存储库 视图的 ... 视图和更多操作 菜单以及 源代码控制 视图的 ... > 视图和排序 > 存储库 菜单来更改排序顺序。
下面的短视频显示,SCM > 存储库:排序顺序 设置默认值为 discovery time
,即选择存储库的时间,你也可以在源代码控制视图中更改排序顺序。
编辑器装饰改进
在上一个里程碑中,我们通过采用已修改行装饰器的模式来提高了编辑器装饰器对于添加/修改行的可访问性。在这个里程碑中,我们添加了一个新设置 scm.diffDecorationsGutterPattern
,允许用户切换编辑器装饰器的模式。
该设置默认为已修改行装饰使用模式,但对于添加行则不使用
"scm.diffDecorationsGutterPattern": {
"added": false,
"modified": true
}
性能改进
将 git.untrackedChanges
设置为 hidden
的用户在使用大型存储库时将体验到更好的性能。这是通过在调用 git status
时传递 -uno
参数实现的。
扩展的远程源提供程序 API
Git 扩展 API 现在允许注册或显示 远程源提供程序的扩展,以提供有关远程源的更丰富的信息。
远程源提供程序现在可以设置单个远程源的描述和图标。此外,提供程序可以选择指定 最近的 远程源。这些会显示在选择器的顶层,以便于访问,并按时间戳排序(如果提供了时间戳)。
内置的 GitHub 扩展以及 GitHub 存储库 和 Azure Repos 扩展在 github.dev 和 vscode.dev 中都采用了扩展的 API。
使用 SSH 从 GitHub 克隆
新设置 github.gitProtocol
允许你更改从 GitHub 克隆存储库时的默认协议。默认值为 https
,但可以更改为 ssh
。
调试
自动展开延迟变量
几个月前,我们添加了单击按钮以展开调试器变量视图中的“延迟”变量的支持。有一个新设置 debug.autoExpandLazyVariables
,可以自动展开延迟变量,而无需单击。
延迟变量的新按钮
我们将文本链接按钮更新为带有“眼睛”codicon 的真实按钮。“眼睛”codicon 也被更新为看起来更像眼睛。
按住 Shift 键单击以禁用断点
你现在可以 Shift+单击
断点(或条件断点或日志点)以禁用它,并重新启用它。
语言
Markdown:拖放到编辑器中以创建链接
你现在可以通过将文件从 VS Code 的资源管理器拖放到 Markdown 编辑器中来快速创建 Markdown 链接。在将文件拖到 Markdown 编辑器上时按住 Shift
键,将其放入编辑器并创建指向它的链接。
如果文件看起来像图像,VS Code 将自动插入 Markdown 图像。否则,将添加一个普通的 Markdown 链接。
当从其他应用程序拖动某些类型的文件时,这也适用,例如从 Web 浏览器拖放图像。
你可以通过设置 "markdown.editor.drop.enabled": false
来禁用此拖放行为。
Markdown:查找所有标题引用
VS Code 现在支持在 Markdown 文件中运行 查找所有引用 以查找标题。这使你可以查看给定标题在当前工作区中的所有使用位置,包括从其他 Markdown 文件链接到它的位置。
要开始使用,请将光标放在标题本身上,或者放在链接到标题的片段部分上(例如,[链接文本](#_some-header)
或 [链接文本](/path/to/file#some-header)
中的 #some-header
),然后运行 查找所有引用。
这将在引用视图中显示所有引用。如果你更喜欢其他视图,你还可以使用 查看引用 或 转到引用 命令。
Markdown:查找所有对引用链接的引用
VS Code 还支持查找当前文件中所有对 引用链接 的引用。这支持以下情况:
- 在
[一些文本][ref]
中的ref
上。 - 在速记链接
[ref]
中的ref
上。 - 在链接定义
[ref]: http://example.com
中的ref
上。
Markdown:查找所有对文件的引用
你现在还可以查找当前工作区中对给定 Markdown 文件的所有引用。同样,这包括跨文件的链接。
可以通过几种方式触发此操作:
- 要查找对当前 Markdown 文件的引用,请使用 Markdown: 查找文件引用 命令。
- 要在资源管理器中查找对 Markdown 文件的引用,请右键单击它并运行 查找文件引用 命令。
- 在链接到 Markdown 文件的链接的文件部分(例如
[文本](/link/to/file.md)
)上运行 查找所有引用。
这将列出引用给定文件的所有位置,包括引用该文件内标题的位置。
Markdown:查找所有对 URL 的引用
最后,我们也支持查找当前工作区中给定 URL 的所有使用位置。
Markdown:重命名标题
曾经在 Markdown 文件中更改标题,却意识到你还意外地破坏了所有指向它的链接吗?这就是我们新的 Markdown 重命名支持可以提供帮助的地方。
要开始使用,请将光标放在标题上,然后按 F2
开始重命名。输入标题的新文本,然后按 Enter
接受。这将更新当前标题,并更新当前工作区中所有已知的指向它的链接。
你可以在标题本身上或在链接到标题的链接的标题组件上触发重命名。例如,[链接文本](#_some-header)
或 [链接文本](/path/to/file#some-header)
中的 some-header
。
Markdown:重命名引用链接
你还可以在 Markdown 中重命名引用链接。这将更新当前 Markdown 文件中的所有引用链接。
Markdown:重命名文件
为了完善我们新的 Markdown 重命名支持,你现在可以在 Markdown 链接中的文件路径上使用 F2
来重命名磁盘上的文件,并更新所有对它的 Markdown 引用。
目前,仅支持在文本编辑器中对指向文件的链接使用 F2
来重命名文件。在即将到来的迭代中,我们还计划支持在资源管理器中触发重命名时更新链接。
JSON
新设置 json.validate.enable
允许你关闭 JSON 验证。
Web 版 VS Code
打开远程存储库选择器
Web 版 VS Code 现在在你使用 打开远程存储库 选择器时遵守 window.openFoldersInNewWindow
设置。这将选择器的行为与其他版本的 VS Code 对齐,并替换 在新窗口中打开 快速选择项按钮。
对扩展的贡献
Java
内嵌提示
Java 扩展包中包含的 Java 语言服务现在支持 内嵌提示,以显示方法签名的参数名称。
Java 参数名称内嵌提示有三种模式:
literals
- 仅为字面参数启用参数名称提示(默认)。all
- 为字面参数和非字面参数启用参数名称提示。none
- 禁用参数名称提示。
延迟变量解析
Java 调试器 扩展现在支持 “延迟”变量。此功能允许你推迟昂贵变量的操作,直到你显式展开调试器 UI 以查看其值。
Jupyter
Jupyter PowerToys 扩展
我们很高兴地宣布 Jupyter PowerToys 扩展,该扩展为处理 Jupyter 笔记本提供了实验性功能。在其首次发布中,我们原型化了以下功能:
- 内核管理面板
- 上下文帮助
- 执行分组
我们非常希望您能试用这些功能,并告诉我们您的想法,以便我们能在未来将它们打磨成正式支持的功能!
更多信息,请参阅 vscode-jupyter-powertoys 仓库中的 README 文件。
Web 扩展
Jupyter 扩展现在可以作为 Web 扩展安装,以便在 vscode.dev 中使用。目前功能有限,仅支持在不需要 https 的 Jupyter 服务器上运行笔记本 (.ipynb
文件)。
如果您想体验此功能,请在本地计算机上启动 Jupyter,使用以下命令:
jupyter --no-browser --NotebookApp.allow_origin_pat=https://.*\.vscode-cdn\.net
并使用命令 Jupyter: Specify Jupyter server for connections 连接到它。
在即将发布的版本中,我们将在浏览器中启用更多功能,包括:
- 'https' 基础的服务器
- 智能感知
- 数据查看
- 变量查看
- 交互窗口
- IPyWidgets
- 绘图查看
- 导出
Jupyter 内核处理
Jupyter 内核处理进行了一些更新
- 为了更明显地提示内核崩溃,扩展现在会在单元格输出中显示此信息。
- 当执行过程中检测到某些已知错误时,单元格输出中现在会提供故障排除指南。
- 解决内核执行问题可能是一个棘手且耗时的过程。我们在我们的 wiki 上整理了一个 故障排除部分,希望可以帮助您更快地找到解决方案。我们的 GitHub Discussions 论坛 也是获取帮助的绝佳资源。
Python
更改语言服务器时无需重新加载
Python 扩展现在支持更新 python.languageServer
设置的值,并在无需重新加载 VS Code 的情况下自动重启语言服务器。
Black 格式化扩展
现在有一个 Black Formatter 扩展,它使用 black 格式化程序为 Python 提供格式化支持。该扩展的预发行版本可供安装。
使用 isort 组织导入
新的 isort 扩展,它使用 isort 库提供导入组织功能。该扩展的预发行版本可供安装。
远程开发
关于 远程开发扩展 的工作仍在继续,该扩展允许您使用容器、远程机器或 适用于 Linux 的 Windows 子系统 (WSL) 作为功能齐全的开发环境。
您可以在 远程开发发行说明 中了解新的扩展功能和错误修复。
GitHub Pull Requests 和 Issues
关于 GitHub Pull Requests 和 Issues 扩展的工作仍在继续,该扩展允许您处理、创建和管理拉取请求和问题。此版本的亮点包括:
- 多行注释
- 以树状结构显示提交更改
查看扩展的 0.42.0 版本更新日志 以了解其他亮点。
预览功能
设置配置文件
在此里程碑中,我们引入了 设置配置文件,它是您的设置、扩展和 UI 自定义的集合。如果您自定义了 VS Code,您现在可以将您的自定义导出到设置配置文件 (mysetup.code-profile
) 并将其保存到您的计算机上,并与他人共享。
以下短视频演示了从 VS Code 导出设置配置文件
您还可以导入设置配置文件以还原您的自定义。
以下显示了将设置配置文件导入 VS Code
您可以将您的设置配置文件托管在云端,例如将其保存为公开的 GitHub gist,并与他人共享 URL。可以通过提供 URL 导入设置配置文件。
注意:目前,设置配置文件中仅包含以下 UI 自定义。未来将会添加更多。
- 状态栏项目可见性
- 活动栏、底部面板和侧面板项目可见性和顺序
- 视图可见性、位置和顺序
TypeScript 4.7 支持
此更新包括对即将发布的 TypeScript 4.7 的支持。请参阅 TypeScript 4.7 迭代计划 以了解有关 TypeScript 团队当前正在进行的更多详细信息。一些亮点:
- 使用新的 转到源定义 命令直接跳转到库函数的 JavaScript 实现。您可以在 TypeScript issue #49003 中了解有关此功能的更多信息并分享您的反馈。
- 用于将方法作为对象成员完成的代码片段。
- 组感知组织导入.
要开始使用 TypeScript 4.7 的 nightly 构建版本,请安装 TypeScript Nightly 扩展。
扩展开发
选项卡 API
我们已经完成了选项卡 API 的只读端(也支持关闭选项卡),这标志着我们最受赞同的问题之一 microsoft/vscode#15178 的完成。这暴露了诸如组的数量、打开的选项卡、活动的选项卡、选项卡代表的编辑器类型等信息! 更多信息可以在 vscode.d.ts
文件中找到,API 的入口点是 window.tabGroups
。
笔记本更改和保存事件
我们已经完成了两个与笔记本相关的事件
vscode.workspace.onDidSaveNotebookDocument
- 每当笔记本被保存时触发的事件。vscode.workspace.onDidChangeNotebookDocument
- 每当笔记本被更改时触发的事件。 这包括结构性更改(例如添加或删除单元格)以及单元格更改(例如更改输出或元数据)。
支持非递归工作区文件监视器
在之前的里程碑中,我们 宣布,只要文件夹不在打开的工作区内,就可以使用 createFileSystemWatcher
API 来监视磁盘上的任何文件夹。 现在,我们放宽了此限制,允许在任何位置(即使在打开的工作区内)使用非递归文件监视器。 非递归监视器的优点是为排除(files.watcherExclude
)配置的设置不适用,因此您可以确保文件监视器仅为订阅的路径发出。
我们正在努力为扩展提供具有自定义排除规则的递归监视器的完整支持,敬请期待更多信息!
UX 指南
扩展作者的 UX 指南 已被重新制作,具有自己的目录,您可以在其中找到使用各种 VS Code 用户界面元素的最佳实践。 特定主题讨论了在为扩展创建 UI 时建议的 "Do's and Don't's",以便它们可以无缝集成到 VS Code 中。
运行扩展测试
之前,VS Code 会在测试运行完成后立即退出扩展主机进程。现在,当运行扩展测试时,VS Code 会首先经过常规的 deactivate
流程,然后再退出。这允许生成进程的扩展更好地在之后进行清理。
将文件拖放到自定义树中
在最近完成的树拖放 API 的基础上,我们现在基本支持使用 text/uri-list
MIME 类型将 OS 中的文件拖放到扩展树视图中。
调试器扩展开发
支持 supportSuspendDebuggee 和 supportTerminateDebuggee 的 UI
disconnect
请求有两个额外的选项,使客户端可以控制断开连接时调试对象发生的情况:
suspendDebuggee
指示调试对象在断开连接后是否应保持暂停状态。terminateDebuggee
指示调试器断开连接时是否应终止调试对象。
调试适配器可以使用功能 supportSuspendDebuggee
和 supportTerminateDebuggee
来表示它支持这些选项。 如果支持,则在调试工具栏中的停止按钮旁边会出现一个下拉菜单,其中包含额外的断开连接命令。
例如,在“启动”类型的调试会话中,对于支持这两个功能的调试适配器,默认的工具栏按钮将是正常的 停止 按钮,但下拉菜单将包括 断开连接 (terminateDebuggee: false
) 和 断开连接并暂停 (terminateDebuggee: false, suspendDebuggee: true
)。
语言服务器协议
对笔记本和拉取诊断的支持已从建议状态移出,准备好发布 3.17 版本。 相应的客户端和服务器库的新版本已发布到 npm。
建议的 API
每个里程碑都会带来新的建议 API,扩展作者可以试用它们。 和往常一样,我们需要您的反馈。 以下是尝试使用建议 API 的步骤
- 找到您要尝试的提案 并将其名称添加到
package.json#enabledApiProposals
。 - 使用最新的 vscode-dts 并运行
vscode-dts dev
。它会将相应的d.ts
文件下载到您的工作区。 - 现在您可以针对该提案进行编程。
您不能发布使用建议 API 的扩展。 下一个版本中可能会有重大更改,我们绝不希望破坏现有的扩展。
拖放到编辑器中
建议的 文本编辑器拖放 API 允许扩展处理拖放到文本编辑器中的操作。 这些拖放事件可能来自 VS Code 内部(例如,将文件从 VS Code 的资源管理器拖到文本编辑器中),也可能由将文件从您的操作系统拖放到 VS Code 中生成。
在此迭代中,我们将此 API 切换为基于提供程序模型。 我们还创建了一个 新的扩展示例,演示了如何使用此 api。
视图上的徽章
新的 向视图添加徽章 的提案可供试用。 与 VS Code 核心提供的视图上的徽章工作方式类似,扩展可以使用此 API 提案向视图添加数字徽章。
工程
用于 Electron 冒烟测试的 Playwright
我们长期以来一直使用 Playwright 进行基于 Web 的冒烟测试。 但是,我们基于 Electron 的冒烟测试仍然依赖于我们自己的自定义解决方案。 借助 Playwright 中的 Electron 支持,我们能够重用我们的大部分基于 Web 的冒烟测试代码,并将其用于我们的 Electron 冒烟测试。 我们很高兴现在可以使用 Trace Viewer 对事后失败的冒烟测试进行诊断。
扩展的新本地化管道
VS Code 支持多种显示语言,您可以通过安装语言包来启用它们。这些语言包非常适合本地化 VS Code 本身以及 VS Code 的内置扩展。在本迭代中,我们已开始着手标准化非内置的、由团队拥有的扩展的本地化工作。您可以在 GitHub Repositories 和 Azure Repos 扩展中看到这项工作的成果,因为它们的通用依赖扩展 Remote Repositories 是第一个加入此项工作的扩展。
在下一个迭代中,我们将继续这项标准化工作,并让更多扩展加入。目前,Python 扩展正在进行中,GitHub Repositories 和 Azure Repos 将会紧随其后。我们希望达到一个目标,即团队拥有的每个扩展都已本地化,并且将来创建的任何新扩展都能轻松加入,以便非英语母语的用户也能在 VS Code 中获得出色的体验。
文档
VS Code 中的 Rust
有一个新的 Visual Studio Code 中的 Rust 主题,描述了 VS Code 中使用 rust-analyzer 扩展对 Rust 编程语言 的支持。rust-analyzer 扩展包括丰富的语言功能,例如代码补全、代码检查、重构、调试等等。
值得注意的修复
- 114844 允许从崩溃对话框中跳过从先前会话恢复编辑器
- 127936 允许在启动时将
files.encoding
设置为文件的特定于语言的设置 - 138461 在 React 文件中的一对 [ ] 内 Emmet 自动补全错误
- 139392 确认清除最近项目
- 139950 当断点被命中时,插入符号(光标)应移动到该行
- 145265 Windows 上的终端使用 cmd /C,这会破坏传递的参数
- 146406 终端中的 Powerline 符号颜色错误
- 146977 在 macOS 上的 Info.plist 中声明文件夹支持
- 147104 无法完成登录 GitHub
感谢
最后但同样重要的是,非常感谢 VS Code 的贡献者。
Web 扩展
扩展作者们,用于启用作为 web 扩展 运行代码的扩展(以下列表为 2022 年 3 月 28 日至 2022 年 5 月 1 日期间)
- Logos for VS Code (Aarnav Tale)
- Copy Word in Cursor (Alessandro Fragnani)
- Delphi Keymap (Alessandro Fragnani)
- Pascal (Alessandro Fragnani)
- Separators (Alessandro Fragnani)
- Tagged Comment (Alessandro Fragnani)
- NeuroViewer (Anibal Solon)
- sb4-extension (arrow2nd)
- DeloresDevDev (bolinfest)
- VSCode Remote Server (btwiuse)
- Text Toolbox (Carlo Cardella)
- CloudStudio.common (CloudStudio)
- Vsnips (corvofeng)
- Const & Props Snippets (dein Software)
- dein Snippets Pack (dein Software)
- EVSCode Web IDE Connector (web, experimental) (Elrond)
- String To Any Case (gauseen)
- Image Gallery (GeriYoco)
- 模袋云-modelo (heekei zhuang)
- sigma (humpalum)
- My Snippets (Jaedeok Kim)
- GCS Uploader (kb-devs)
- TEI Japanese Editor Web (ldas)
- tal7aouy.indent-colorizer (Mhammed Talhaouy)
- minim-tools.m-web (minim-tools)
- UUID Generator (Motivesoft)
- TyranoScript syntax (orukred)
- VDM VSCode (Overture)
- Excalidraw (pomdtr)
- WebGL GLSL Editor (Rácz Zalán)
- Vue (Rahul Kadyan)
- VueDX (Rahul Kadyan)
- BDD Goto Step (rioj7)
- Extra Context (rioj7)
- web_prolin_emulator (runthoser)
- Go Nav Bar (Scotthew)
- yaist-vscode (toyjack)
- Pyodide Runner (tym-inc)
- Import Cost (Wix)
- Lawtext (yamachi)
- ZG Assembler (ZENG GE)
问题跟踪
对我们问题跟踪的贡献
- John Murray (@gjsjohnmurray)
- Andrii Dieiev (@IllusionMH)
- Simon Chan (@yume-chan)
- Lemmingh (@Lemmingh)
拉取请求
对 vscode
的贡献
- @100paperkite
- 修复 #146305 PR #146449
- 修复 #147420 PR #147930
- @a-stewart (Anthony Stewart)
- 当没有提供操作时,创建一个空的 div.message-actions-container PR #140578
- 更新横幅 Markdown 中链接的颜色 PR #140581
- 将面向用户的 SCM 实例重命名为 Source Control PR #146742
- @AkatQuas (Akat): fix(markdown): 避免在代码部分考虑链接引用/来源 PR #146826
- @amanasifkhalid (Aman Khalid)
- 关闭 #143241:测试 UI 过滤器在窗口重新加载后仍然存在 PR #147344
- 修复 #146166:代码片段转换保留现有的驼峰/帕斯卡命名法 PR #147422
- @ambar (ambar):修复 Unicode 高亮显示中的括号编码 PR #146248
- @andschwa (Andy Schwartzmeyer):删除内置的 PowerShell 代码片段 PR #146459
- @babakks (Babak K. Shandiz):在 Fork 一个存储库时,要求用户选择 PR 模板 PR #143733
- @Balastrong (Leonardo Montini)
- 145367 如果存在,则将 cwd 添加到终端名称 PR #145620
- 在 debug.inlineValues 中将 true 和 false 替换为 on 和 off PR #146543
- @bytemain (Artin): 修复
TerminalProfile
不抛出异常的问题 PR #143251 - @cdce8p (Marc Mueller): 修复
git
getBranch [v1.65.0] 的问题 PR #144449 - @CGNonofr (Loïc Mangeonjean): 修复计算新折叠块时冻结的折叠块问题 PR #146545
- @dlech (David Lechner): 修复当上下文菜单禁用时,编辑器吞噬上下文菜单键的问题 PR #146968
- @eamodio (Eric Amodio): 修复 #140787 监视正确的 worktree 目录的问题 PR #140789
- @gabritto (Gabriela Araujo Britto): 在 TS 完成项中添加对标签详细信息的支持 PR #146270
- @gjsjohnmurray (John Murray): 将 “在调试控制台中求值” 和 “添加到监视” 添加到命令面板 PR #146775
- @heartacker: 将 git.fetch 操作添加到第一个头部菜单 PR #137940
- @hello-smile6: 更新 package.json PR #146278
- @IllusionMH (Andrii Dieiev): 修复错误消息中的版本 PR #147750
- @ImCa0 (ImCaO): 修复可翻译字符串中的拼写检查错误 PR #147234
- @jhgg (Jake): 新功能:内嵌提示 displayStyle PR #145470
- @jlelong (Jerome Lelong): 更新到 vscode-latex-basics 1.3.0 PR #146308
- @jsjoeio (Joe Previte)
- 重构(workbench.ts):更新过时的注释 PR #146364
- 修复(service-worker):允许从同一域提供 webview 资源 PR #147467
- @laurentlb (Laurent Le Brun)
- 评论面板:使用最后回复的日期 PR #147922
- 评论面板:不要截断作者姓名 PR #147924
- @luoriyuhui21 (Keming Liang): 添加一个设置来忽略 workbench.editor.limit.value 中的脏标签页 PR #144545
- @manunamz (manunam): 更新 docstring 中的 markdownRenderer.ts 路径 PR #146332
- @matthewjamesadam (Matt Adam): 为 webview 和 treeview 实现徽章 API PR #144775
- @mbelsky (Max Belsky): 通过 shift+click 禁用断点 PR #147598
- @michaelkuhn (Michael Kuhn): 统一并修复 Solarized 令牌颜色 PR #142883
- @neeleshb (Neelesh Bodas): VSCode 的杂项 A11y 修复 PR #145775
- @nesk (Johann Pardanaud): 改进 markdown 代码片段的用户体验 PR #146431
- @quanzhuo (Quan Zhuo)
- 修复问题 #145134,为已验证用户获取所有存储库 PR #145203
- 修复 #140612: 当上下文行号…时切换切换按钮 PR #147141
- @Suven-p (Suven-p): 添加隐藏所有测试的操作 PR #148003
- @tharbakim: 修复 Emmet 扩展中文件开头 CSS 预处理器注释的检测 PR #146121
- @thekorn (Markus Korn): git 扩展:如果 'git.untrackedChanges' 设置为 'hidden',则在运行 'git status' 时忽略未跟踪的文件(修复 microsoft/vscode#131020) PR #131030
- @yepitschunked: [Git 观察器] 忽略 watchman cookies PR #127702
对 vscode-css-languageservice
的贡献
- @romainmenke (Romain Menke): 修复
:lang
和类似伪选择器的选择器特异性显示 PR #268
对 vscode-generator-code
的贡献
- @rupeshs (Rupesh Sreeraman): 修复 ext-snippets 快速入门文档的问题 PR #340
对 vscode-js-debug
的贡献
对 vscode-pull-request-github
的贡献
- @hoontae24: 支持 Github Enterprise URL 的复制永久链接 PR #3460
对 debug-adapter-protocol
的贡献
- @KamasamaK: 修复一些拼写错误 PR #264
- @peterderivaz (Peter de Rivaz): 修复 SetBreakpointsArguments 的描述 PR #261
- @polinasok: 为 Go 调试适配器更新 adapters.md PR #262
- @WardenGnaw (Andrew Wang): 删除 adapters.md 中的额外换行符 PR #263
对 language-server-protocol
的贡献
对 monaco-editor
的贡献
- @DetachHead: 将
out
关键字添加到 typescript PR #3066 - @Yash-Singh1 (Yash Singh): 新功能:为 CSS 网格添加 fr 单位 PR #3078