欢迎使用 2021 年 9 月版的 Visual Studio Code。我们希望您会喜欢此版本中的许多更新,其中一些主要亮点包括:
在同一组内拆分编辑器- 为同一文件快速创建并排编辑器。
锁定编辑器组- 选择编辑器类型以自动锁定编辑器组。
更好地显示已删除和只读文件- 选项卡装饰突出显示已删除和只读文件。
支架对指南- 显示用于链接匹配支架对的垂直指南。
固定端子尺寸- 设置活动端子的宽度和高度。
Jupyter Notebook 改进- 目录视图,全面的调试支持。
特定于平台的扩展- 为 Windows、macOS 和 Linux 发布不同的扩展版本。
虚拟工作区扩展指南- 了解如何为虚拟环境更新扩展。
高级容器配置- 帮助配置开发容器的提示、代码示例和视频。
如果您想在网上阅读这些发行说明,去更新上code.visualstudio.com。
在 VS Code 团队的发布派对上观看此版本中的新功能亮点。您可以在我们的 YouTube 频道上找到活动的录音。
业内人士:想尽快尝试新功能吗?您可以下载每晚的Insiders版本,并在最新更新可用时立即试用。
添加了一个新命令Split in Group ( Ctrl+K Ctrl+Shift+\ ) 以将编辑器拆分为两侧,而无需第二个编辑器组。这允许您在两个编辑器中并排处理同一个文件。您还可以通过短视频中看到的切换布局按钮在垂直或水平拆分之间切换布局。
workbench.editor.splitInGroupLayout
如果您更喜欢垂直或水平拆分,则有一个新设置。
有一些新命令可以通过键绑定使用此功能:
workbench.action.splitEditorInGroup
workbench.action.toggleSplitEditorInGroup
workbench.action.joinEditorInGroup
workbench.action.toggleSplitEditorInGroupLayout
并在双方之间导航:
workbench.action.focusFirstSideEditor
workbench.action.focusSecondSideEditor
workbench.action.focusOtherSideEditor
新颜色sideBySideEditor.border
将边框的颜色设置为将一侧与另一侧分开。
锁定编辑组#
我们在最后一个里程碑中引入了锁定编辑器组作为实验性新功能。在此里程碑期间,设置体验得到改进,允许您轻松选择在打开时应自动锁定组的编辑器:
该设置现在称为workbench.editor.autoLockGroups
。同样,与编辑器组锁定相关的命令已重命名,不再是实验性的:
workbench.action.lockEditorGroup
workbench.action.unlockEditorGroup
workbench.action.toggleEditorGroupLock
通过装饰指示已删除和只读的编辑器#
打开的编辑器可以指示它们是只读的还是它们关联的资源是否已从磁盘中删除。此指示是通过将“已删除”和/或“只读”附加到编辑器标签来给出的,需要相当多的空间。
VS Code 现在为此使用装饰:
已删除资源的编辑器会以删除线和红色显示。
具有只读资源的编辑器带有锁图标。
将编辑器拆分为现有组#
当您将编辑器拆分到一侧时,VS Code 会打开一个新的编辑器组,即使该侧存在现有组也是如此。但是,有时您希望将编辑器拆分为现有的组。
为了支持这一点,添加了新命令:
workbench.action.splitEditorToPreviousGroup
: 分成上一组。
workbench.action.splitEditorToNextGroup
: 分成下一组。
workbench.action.splitEditorToAboveGroup
: 拆分为当前组上方的组。
workbench.action.splitEditorToBelowGroup
:拆分到当前组下面的组。
workbench.action.splitEditorToLeftGroup
:拆分为当前组左侧的组。
workbench.action.splitEditorToRightGroup
:拆分为当前组右侧的组。
workbench.action.splitEditorToFirstGroup
: 分成第一组。
workbench.action.splitEditorToLastGroup
: 分成最后一组。
差异编辑器的较短标签#
当您比较两个文件时,工作区相对文件夹路径以文件名为前缀,因此很难看到正在比较的文件的名称。
在此版本中,文件夹现在对标签隐藏,除非两个文件名相同,与普通编辑器标签的行为相匹配。
如果两个文件名相同,则会显示提示文件夹差异的说明:
macOS:文件菜单更改#
在 macOS 上,如果从“文件”菜单中选择“打开...”菜单项,则可以打开文件和文件夹。对于新用户来说,这可能会让人感到意外,人们试图使用“打开工作区”命令打开文件夹,而该菜单项专门用于打开文件。.code-workspace
为避免混淆,我们对 macOS 上的文件菜单进行了细微调整:
一个新条目Open Folder...打开一个文件夹。
打开工作区...重命名为从文件打开工作区...
遥测设置#
有一个新的遥测设置,telemetry.telemetryLevel
它提供了更高的配置粒度,并让用户选择他们是否只想发送错误遥测而不是一般使用数据。该值是on
,error
和off
。和的值on
也error
将启用崩溃报告器。
现有设置telemetry.enableTelemetry
和telemetry.enableCrashReporter
已标记为弃用,以支持新telemetry.telemetryLevel
设置,但将继续受到尊重。
小地图背景透明度#
现在可以使用新添加的颜色独立于小地图文本的不透明度配置小地图背景不透明度minimap.foregroundOpacity
。
更新了帮助菜单项#
随着入门体验的不断改进,“帮助”菜单项已更新为更常用的名称。这是基于新用户的学习,但希望让每个人都更容易找到帮助。Welcome现在是Get Started,Introduction Videos是Video Tutorials,Interactive Playground变成了Editor Playground。您将在“帮助”菜单和“命令面板”中找到新名称。“帮助”菜单还有一个“显示所有命令”条目作为打开命令面板的附加入口点。
编辑器现在支持基本的括号对指南。括号对指南使用与括号对着色功能相同的颜色和算法。最近的“括号对着色速度提高 10,000 倍”博客文章中详细描述了括号对匹配算法。
与缩进指南类似,活动括号对指南被突出显示。
可以通过配置editor.guides.bracketPairs
设置(默认为false
)来启用支架对指南。我们将继续迭代此功能并在下一个版本中探索垂直指南。
缩进指南设置#
在editor.renderIndentGuides
和editor.highlightActiveIndentGuide
设置已被弃用,取而代之的editor.guides.indentation
和editor.guides.highlightActiveIndentation
。
Git 扩展现在向源代码管理视图添加了一个新的“操作”按钮,以允许您更轻松地发布或同步任何未推送的更改。
主题:紫水晶主题
默认情况下,如果有未推送的提交,Git 扩展将添加一个如上所示的同步更改按钮,或者如果分支尚未发布,则添加一个发布更改按钮。此外,用户可以通过配置git.showUnpublishedCommitsButton
设置来自定义此行为,默认设置为whenEmpty
只有在未推送提交且视图中没有其他更改时才会显示按钮。
此新操作按钮可用作源代码管理扩展的新提议 API,有关更多详细信息,请参阅下面的提议 API 部分。
最后,用户可以通过新scm.showActionButton
设置完全禁用源代码管理视图中任何操作按钮的可见性,这会覆盖任何源代码管理扩展的行为。
增加了更改文件显示的限制#
在此版本之前,Git 扩展有 5000 个更改的硬编码限制,它可以在源代码控制视图中显示。限制是为了防止用户在 VS Code 处理 Git 报告的所有更改时不得不等待太长时间。此限制现在增加到 10,000 次更改,并且有一个新git.statusLimit
设置允许用户自定义限制(如果需要,每个存储库)。此设置也可以设置为0
完全禁用限制,但请注意,如果有大量更改,这可能会导致更新需要很长时间。
此外,当超出限制时,我们在输入框中添加了以下警告指示器。
您现在可以通过终端:设置固定尺寸命令 ( workbench.action.terminal.setDimensions
)静态设置终端尺寸。这对于换行可能令人不快或具有破坏性的情况很有用。
该命令将显示一个提示,您可以在其中输入首选宽度和/或高度。
自定义标题和描述#
终端名称通常是与它们关联的进程的名称,有时很难区分终端。
您现在可以使用terminal.integrated.tabs.title
和terminal.integrated.tabs.description
设置中的变量配置标题和描述。
当前的默认值是:
{ "terminal.integrated.tabs.title": "${process}", "terminal.integrated.tabs.description": "${task}${separator}${local}${separator}${cwdFolder}"}
可用的变量有:
${cwd}
- 终端的当前工作目录
${cwdFolder}
- 终端的当前工作目录。
${workspaceFolder}
- 启动终端的工作区。
${local}
- 表示远程工作区中的本地终端。
${process}
- 终端进程的名称。
${separator}
- 条件分隔符 (" - "),仅在被带有值或静态文本的变量包围时才显示。
${sequence}
- 进程提供给 xterm.js 的名称。
${task}
- 表示此终端与任务相关联。
表情符号输入法#
macOS 上的输入法编辑器 (IME) 现在支持表情符号。
Alt 缓冲区活动上下文键#
一些终端 UI 应用程序,如 nano,使用 VS Code 工作台使用的键盘快捷键,这限制了它们在 VS Code 中集成时的功能。当 alt 缓冲区处于活动状态以解决此问题时,新的when 子句上下文键TerminalContextKeys.altBufferActive
将键绑定定向到终端而不是工作台。
语言#新的 JavaScript 和 TypeScript 语言状态项#
当前的 TypeScript 版本和 IntelliSense 状态现在显示在语言状态栏项中:
以前,TypeScript 版本始终显示在状态栏中。您可以固定版本以恢复旧行为:
语言状态项还显示当前文件的jsconfig/tsconfig
并指示您当前是否处于部分模式。
跨无标题文件的 IntelliSense #
所有未命名的 JavaScript 和 TypeScript 文件现在都被视为同一项目的一部分。这意味着在一个无标题文件中定义的全局符号现在将在其他文件中显示为建议。
这更好地匹配工作区中磁盘文件的行为。您可以向无标题文件添加import
或export
以将其转换为模块,这将对其他文件隐藏其全局变量。
跨网络文件的 IntelliSense #
当 VS Code 在浏览器中运行时,IntelliSense 现在可以跨vscode.dev或github.dev上的 JavaScript 和 TypeScript 文件工作。
请记住,当 VS Code 在浏览器中运行时,它只能访问您当前打开的文件,因此 VS Code 无法提供项目范围的 IntelliSense 功能,例如自动导入。
更一致的 JSX 标签折叠#
当你在 JavaScript 或 TypeScript 中折叠 JSX 标签时,VS Code 现在会继续显示结束标签:
这与折叠在 HTML 中的工作方式相匹配。
此更新包括对即将发布的 TypeScript 4.5 版本的初始支持。有关新语言和工具功能的更多信息,请参阅TypeScript 4.5 beta 公告帖子。一些工具亮点:
最初支持JSX 属性完成。
引用 CodeLens 的更准确的引用计数。
要开始使用 TypeScript 4.5 nightly 版本,请安装TypeScript Nightly 扩展。
如果您在使用 TypeScript 4.5 时遇到任何错误,请分享您的反馈并告诉我们。
跨应用程序重启恢复终端会话#
当 VS Code 窗口关闭时,终端进程将被处理。在此版本中,有一个新的选择加入设置,用于记录和恢复缓冲区并使用它来重新创建进程。设置terminal.integrated.persistentSessionReviveProcess
以启用此功能。
将终端大小切换到内容宽度#
您可以通过Alt+Z或使用选项卡上下文菜单操作Toggle Size to Content Width在适合完整内容和换行之间切换终端宽度。
这类似于在编辑器中切换换行的行,并与之共享键绑定。
目录
Jupyter Notebooks 的目录现在可以通过命令Jupyter: Show Table of Contents in the Command Palette 访问。也可以通过笔记本工具栏中的图标访问相同的功能。
此功能适用于 VS Code 中的所有笔记本,因此可以通过文件资源管理器中的大纲视图访问。
通过新建文件菜单创建新笔记本
您现在可以使用菜单项File > New File...创建一个新的 Jupyter Notebook 。也可以从“入门”页面或“命令面板”中的“新建文件...”项目访问此菜单。
调试
VS Code 现在支持 Jupyter Notebooks 的完整调试功能。要试用它,请确保已将ipykernel
v6+ 安装为所选内核,设置断点,然后选择Debug Cell命令。
远程调试
您还可以使用按行运行并使用远程内核调试 Jupyter Notebooks。要尝试一下,请使用Jupyter连接到远程内核:为连接命令指定本地或远程 Jupyter 服务器,确保已将ipykernel
v6+ 安装为所选内核,并像往常一样使用按行运行或调试。
单独的渲染器扩展
Jupyter Notebook 渲染器已拆分为单独的扩展(Jupyter Notebook Renderers),允许用户在vscode.dev和github.dev上查看 Notebook 输出,例如 plotly、vega、latex 等。
蟒蛇#
新的 Python 演练
Python 扩展现在提供了一些基本设置步骤的演练,以改善 VS Code 中 Python 的入门体验。
改进的调试体验
在没有launch.json
配置文件的情况下使用工作区时,每次开始调试 Python 文件或项目时,Python 扩展都会显示调试器配置菜单。在调试带有自定义参数(例如 Flask、Django 或 FastAPI)的 Web 应用程序时,这可能特别烦人。
您现在不再需要在每次开始调试时选择配置,因为您所做的第一个选择会在会话的其余部分重复使用。
GitHub 拉取请求和问题#
GitHub 拉取请求和问题扩展的工作仍在继续,它允许您处理、创建和管理拉取请求和问题。查看扩展的 0.31.0版本的变更日志以查看亮点。
远程开发#
远程开发扩展的工作仍在继续,它允许您将容器、远程机器或Windows 子系统 Linux (WSL) 用作功能齐全的开发环境。
1.61 中的功能亮点包括:
转发端口中的 DNS 名称。
轻松选择容器附加功能。
Remote - Containers 扩展可以在 WSL 中执行 CLI 命令。
您可以在远程开发发行说明中了解新的扩展功能和错误修复。
扩展现在可以为 VS Code 支持的每个平台(Windows、Linux、macOS)发布不同的 VSIX。从 VS Code 1.61.0 版本开始,VS Code 会寻找与当前平台匹配的扩展包。从 1.99.0 版本开始,vsce扩展发布工具支持发布特定于平台的扩展。
如果您的扩展具有特定于平台的库或依赖项,则特定于平台的扩展非常有用,因此您可以控制包含在平台包中的确切二进制文件。一个常见的用例是扩展使用本机节点模块。
可以在我们的特定于平台的扩展文档 中找到有关此内容的更多信息。
测试标签和非错误输出#
本月,我们发布了额外的 API,用于在新测试 API上构建的扩展。
启用文件系统提供程序以将文件声明为只读#
文件系统提供程序现在可以通过对象permissions
上的新属性将单个文件标记为只读,方法是FileStat
将属性值设置为FilePermission.Readonly
。只读文件不可编辑。
注意:如果所有文件都应该被视为只读,你可以isReadonly
在调用registerFileSystemProvider
.
设置编辑器扩展类别#
contributes.configuration
当有类别时,设置编辑器现在显示扩展端点的子树。
要创建多个类别,contributes.configuration
接受一组配置,title
每个配置的键用于部分标题。还有一个order
字段,允许在子树中重新排序类别。
类型层次结构#
添加类型层次结构提供者的 API 提案已经完成。
WebviewOptions.enableForms #
新enableForms
属性 onWebviewOptions
允许您启用或禁用 webviews 中的表单。为了向后兼容,enableForms
如果您已经设置了,则默认为 true enableScripts
。否则默认为 false。
我们建议禁用表单,除非您的 webview 内容需要它们。
终端状态#
除了相应的事件外,对象state
上还公开了一个新属性,它指示用户是否与终端进行了交互。例如,扩展程序可能希望等到用户与终端交互以运行操作。Terminal
window.onDidChangeTerminalState
对测试数据运行网络扩展测试#
该@ vscode /测试的网络节点模块提供了CLI和API在铬,Firefox或WebKit的测试网络的扩展。
这个里程碑的新功能是folderPath
在测试数据上打开 VS Code for the Web的选项。内存文件系统包含给定位置的资源,以便测试可以使用文件。
vscode-test-web --browserType=chromium --extensionDevelopmentPath=$extensionLocation $testDataLocation
更新的编码#
以下新图标已添加到我们的codicon库中:
beaker-stop
bracket-dot
bracket-error
bracket
debug-continue-small
graph-line
graph-scatter
pie-chart
Visual Studio Code 的 Webview UI 工具包#
Visual Studio Code的Webview UI Toolkit是一个组件库,用于在 Visual Studio Code 中构建基于 webview 的扩展。
图书馆的特点包括:
实现 Visual Studio Code 设计语言:创建与编辑器的其余部分具有一致外观和感觉的扩展。
自动支持颜色主题:所有组件的设计都考虑了主题,并会自动显示当前的编辑器主题。
使用任何技术堆栈:该库作为一组 Web 组件提供,这意味着开发人员可以使用该工具包,无论他们的扩展是用什么技术堆栈(React、Vue、Svelte 等)构建的。
开箱即用:所有组件均随附符合 Web 标准的 ARIA 标签和键盘导航。
虚拟工作区扩展指南#
当 VS Code 在虚拟环境中运行时,有一个新的Virtual Workspaces扩展指南可以帮助扩展作者测试和更新他们的扩展。随着像GitHub Repositories这样的扩展的引入,它创建了自己的虚拟文件系统,以及像vscode.dev和github.dev这样的新工作流,VS Code 在你的浏览器中运行,扩展不能再假设它们可以直接访问- 磁盘文件系统或平台功能。
虚拟工作区扩展指南涵盖:
您的扩展程序是否无需修改即可在虚拟工作区中运行。
如何更新您的扩展以在没有磁盘文件系统的虚拟工作区中工作。
在虚拟工作区中运行时,如何向 VS Code 发出信号是启用还是禁用扩展。
提议的扩展 API #
每个里程碑都带有新提议的 API,扩展作者可以试用它们。一如既往,我们需要您的反馈。这是您尝试建议的 API 必须做的事情:
您必须使用 Insiders,因为提议的 API 经常更改。
您package.json
的扩展名文件中必须包含这一行:"enableProposedApi": true
.
将最新版本的vscode.proposed.d.ts文件复制到项目的源位置。
您不能发布使用建议 API 的扩展。下一个版本可能会有重大变化,我们永远不想破坏现有的扩展。
TaskPresentationOptions 关闭属性#
该close
属性是架构中的一个presentation
属性tasks.json
,可在TaskPresentationOptions
API 中使用。它的作用与匹配tasks.json
属性相同,通过控制任务完成后是否关闭终端。
标签 API #
有一个用于读取和操作选项卡的提议 API。这会解除常见的功能请求,例如在没有支持的情况下想要访问开放资源列表textDocument
。您可以在issue #133532 中提供有关此 API 的反馈。
MarkdownString.supportHtml #
新提议的supportHtml
属性 onMarkdownString
允许呈现出现在 Markdown 文本中的原始 HTML 的安全子集。
该supportHtml
属性默认为false
。禁用后,VS Code 将删除出现在 Markdown 文本中的所有原始 HTML 标签。
控制器渲染器脚本现在使用 JavaScript 模块#
NotebookController.rendererScripts
让笔记本控制器在运行任何渲染器之前将一组 JavaScript 文件预加载到笔记本中。这些脚本可以初始化笔记本或定义渲染器所依赖的全局符号。
渲染器脚本以前是普通的 JavaScript 文件。这些脚本可以使用 VS Code 导出的全局符号来调用 VS Code 特定的 API。
这个全局符号是不可发现的,并且也没有给 VS Code 对渲染器脚本本身的太多控制。为了解决这个问题,渲染器脚本现在使用导出activate
函数的JavaScript 模块。此函数通过 VS Code API:
interface KernelPreloadContext { readonly onDidReceiveKernelMessage: Event; postKernelMessage(data: unknown): void;}export function activate(ctx: KernelPreloadContext): Promise | undefined { ...}
此更改还更好地将 a 中的渲染器脚本NotebookController
与贡献的notebook 渲染器提供的渲染脚本保持一致。
快速选择 keepScrollPosition 属性#
您从中获取keepScrollPosition
的QuickPick
对象的属性window.createQuickPick()
已添加为建议的 API。这允许您控制cursorTop
快速选择中的滚动位置 ( )是否移回列表顶部。
以下是此 API 的一些用例:
使用建议的QuickPickItemButton
s API(例如,Ctrl/Cmd + P x
QuickPickItemButton)实现“从列表中删除此项目”选项。
使用建议的QuickPickItemButton
s API(例如,插入片段命令)实现“以某种方式切换此项目”选项。
在快速选择中异步加载项目(例如setInterval
通过重新分配.items
属性将项目添加到列表中,其中滚动不应跳到顶部)。
如果没有控制滚动位置的能力,这些操作中的每一个都会强制快速选择的滚动位置跳到列表的顶部。该keepScrollPosition
可扩展的作者来控制这种行为。
SourceControl.actionButton #
源代码控制 API 现在包含一个对象actionButton
属性SourceControl
,允许 SCM 提供者有条件地在输入框下方显示“操作”按钮。例如,当有未推送的更改时,Git 扩展使用这个新属性来显示发布或同步按钮。
语言服务器协议#
语言服务器协议的下一个新版本以及相应的 npm 模块已经发布。新版本包含类型层次结构的建议实现。
工程#切换到 DOMPurify 以清理呈现的 HTML #
我们已在内部改用DOMPurify来清理在主工作台中呈现的 HTML。这主要用于清理呈现的 Markdown。
DOMPurify 维护良好,开箱即用符合受信任的类型。此开关有助于保护用户并使我们更有信心启用MarkdownString.supportHtml等功能。
使用 Big Sur CLI 的 open 命令#
在 macOS Big Sur 上,我们现在使用 open 命令从命令行启动时生成 VS Code。此更改允许 VS Code 像从 macOS Dock 启动一样打开,这修复了一些涉及权利的问题。
文件监视更改#
用于检测磁盘上文件和文件夹更改的文件观察器已更改为可以处理我们支持的所有平台(Windows、Linux、macOS)的库,并减少了为不同平台维护不同观察器的开销。我们计划在所有平台上默认启用此库。本次迭代我们在 Windows 和 macOS 上启用了它,并计划很快在 Linux 上启用它。
新的观察者在启动时应该更快,并导致在大文件夹上花费的 CPU 周期更少。使用该库的一个缺点是文件观察器不再自动检测工作区中作为 macOS 符号链接的文件夹。如果您有这样的设置,您可以使用新files.watcherInclude
设置显式添加符号链接路径以包含文件监视。从好的方面来说,您可以在 Windows 上使用此新设置在工作区中显式包含符号链接文件夹 - 这在 Windows 之前是不可能的。
您应该不会注意到您的日常工作有任何不同,但如果您的文件监视被破坏,请报告问题。files.legacyWatcher
如果遇到问题,有一个设置可以启用旧的观察者。
有一个新部分介绍了Remote-Containers扩展的高级容器配置。
在容器文档中,您可以了解如何:
高级容器配置文档包含用于设置开发容器的技巧和代码示例以及YouTube短视频。
值得注意的修复#
关注微信公众号获取更多VSCode编程信息,定时发布干货文章
全部评论