2019 年 1 月(版本 1.31)
更新 1.31.1:此更新解决了这些 问题。
下载:Windows:x64 | Mac:Intel | Linux 64 位:deb rpm tarball | 32 位:deb rpm tarball
欢迎使用 Visual Studio Code 2019 年 1 月版。此版本中有许多重大更新,我们希望您会喜欢,其中一些主要亮点包括
- 安装扩展时无需重新加载 - 安装新扩展时不会中断。
- 树形 UI 改进 - 改进了资源管理器导航和筛选,水平滚动。
- 主菜单更新 - 重新设计的“转到”操作菜单,“编辑”菜单“剪切”命令。
- 多行问题输出 - 在“问题”面板中查看完整的多行问题详细信息。
- 查找所有引用历史记录 - 快速重新运行以前的引用搜索。
- HTML、CSS 和 JSON 的语义选择 - 基于语言语义扩展/收缩选择。
- 集成终端重排支持 - 终端文本随着面板宽度更改自动重排。
- 基于命令的用户输入变量 - 任务和调试配置的自定义用户输入。
- 更新的扩展 API 文档 - 完全重写,包含扩展指南。
如果您想在线阅读这些发行说明,请访问 更新,网址为 code.visualstudio.com。
您还可以观看 Cloud Developer Advocate Brian Clark 制作的关于 1.31 版本的亮点视频。
发行说明按与 VS Code 重点领域相关的以下部分排列。以下是一些进一步的更新
- 工作台 - 禅模式隐藏行号,新的屏幕广播模式显示击键。
- 编辑器 - 智能选择改进,调整引用 CodeLens 位置。
- 集成终端 - Windows 上的 ConPTY 支持,查找改进。
- 扩展创作 - 扩展更改事件,在浏览器操作中打开资源。
Insiders: 想尽快看到新功能吗?您可以下载每晚构建的 Insiders 版本,并在最新更新可用时立即试用。有关最新的 Visual Studio Code 新闻、更新和内容,请在 Twitter 上关注我们 @code!
扩展
安装时无需重新加载
无需强制重新加载(重启)VS Code 即可安装扩展是最受投票的功能请求之一,我们在此版本中将其带给您。安装或启用扩展时,不再需要重新加载 VS Code。
在下面的示例中,用户按照建议在打开 .vue
文件后安装 Vetur 扩展。请注意,Vetur 扩展提供的语言功能(例如语法着色、诊断错误)在安装推荐的扩展后立即可用。
如果未激活扩展,则在卸载或禁用扩展时也不需要重新加载。
注意: 某些扩展由于外部贡献(向其他扩展的扩展点贡献)而需要重新加载。这需要外部贡献点所有者通过侦听 extensions.onDidChange
事件来采用。
工作台
新的树形小组件
我们已将我们的小组件游戏提升到新的水平:创建了一个新的树形小组件,以解决性能问题,并使我们能够在多个工作台区域中提供更多功能。新的树形小组件是通过组合我们高性能列表小组件创建的。我们打算撰写一篇单独的博客文章,介绍这项工程工作和性能改进。现在,我们将专注于功能。
注意: 新的树形小组件已在文件资源管理器、所有调试树、搜索和速览引用中采用。除非我们明确禁用,否则下面描述的功能适用于大多数这些 UI 区域。
改进的键盘导航
树形小组件中现在有三种不同的键盘导航类型:simple
、highlight
和 filter
。在 highlight
和 filter
模式下,在树形小组件中键入将显示一个位于树形小组件顶部的窗口小组件(控件),指示您现在正在导航树形小组件
此窗口小组件也可用于在 highlight
和 filter
模式之间切换。如果您希望使用键盘快捷键在模式之间切换,则可以配置一个键绑定来执行 list.toggleFilterOnType
命令。工作台 > 列表:键盘导航 (workbench.list.keyboardNavigation
) 设置设置默认模式,包括 simple
模式,在该模式下,键入树形小组件元素的前几个字符只会聚焦该元素。
对于具有列表/树形小组件操作的单字母键绑定的用户,仍然可以使用此功能,方法是利用 listAutomaticKeyboardNavigation
上下文键。例如,VIM 扩展将此上下文键设置为 false
以禁用自动键盘导航,并添加键绑定 /
到 list.toggleKeyboardNavigation
命令,以便用户只需键入 /
即可导航树形小组件。在 VSCodeVIM 拉取请求中了解有关此功能的更多信息。
主题作者可以使用以下新的主题键自定义窗口小组件的颜色
listFilterWidget.background
listFilterWidget.outline
listFilterWidget.noMatchesOutline
注意: 这些键盘导航模式目前仅适用于已解析的树形小组件节点。例如,在文件资源管理器中,如果从未展开文件夹,则树形小组件不会查找其子项。我们正在考虑几种选项来改善此体验。
分层全选
现在,在树形小组件中按 Ctrl+A
(macOS 上为 Cmd+A
)将以分层方式扩展树形小组件的选择。
可自定义的缩进
您现在可以使用 工作台 > 树:缩进 (workbench.tree.indent
) 设置自定义整个工作台中所有树形小组件的节点缩进。
全部展开/折叠
现在,在展开/折叠树形小组件节点时按住 Alt
键将以递归方式工作。请注意,递归展开仅适用于之前在树形小组件中显示的节点。例如,文件资源管理器不会自动展开用户之前从未展开过的文件夹。
水平滚动
工作台 > 树:水平滚动 (workbench.tree.horizontalScrolling
) 设置现在可以在更多树形小组件和列表(即资源管理器、搜索、SCM、调试等)上启用水平滚动。
“问题”面板
多行消息
“问题”面板现在在单独的行中显示多行诊断消息。下面的示例显示了 TypeScript 中的多行错误消息现在是如何呈现的。
您还可以使用折叠/展开按钮或 问题:以单行显示消息 和 问题:以多行显示消息 命令来切换显示或隐藏完整消息。
使用键盘快捷键触发代码操作
现在,您可以使用与快速修复命令相同的默认键盘快捷键 ⌘.(Windows、Linux Ctrl+.)从“问题”面板触发代码操作。
改进了“转到”菜单
我们在“转到”菜单中添加了更多导航操作,使其更易于发现
资源管理器上下文菜单中的“剪切”命令
根据用户的普遍要求,我们在资源管理器上下文菜单中添加了“剪切”命令。
快速滚动
按 Alt
键可在编辑器和资源管理器中启用快速滚动。默认情况下,快速滚动使用 5 倍速度乘数,但您可以使用 编辑器:快速滚动灵敏度 (editor.fastScrollSensitivity
) 设置来控制乘数。
禅模式隐藏行号
现在,打开禅模式也会隐藏编辑器行号。此行为可以通过 zenMode.hideLineNumbers
设置来控制。
在 Linux 中使用自定义菜单添加了键盘导航
我们的自定义菜单现在支持使用 Page Up/Down
和 Home/End
键快速跳转到菜单的开头或结尾。
在 Windows/Linux 中双击应用程序图标以关闭
由于技术上的权衡,默认情况下,Window 和 Linux 上的自定义标题栏会删除双击应用程序图标以关闭窗口的功能。可以通过启用设置 window.doubleClickIconToClose
来重新获得该功能,但需要注意的是,您将无法再从此位置拖动窗口或在 Windows 上获取系统上下文菜单。
编辑器选项卡的关闭顺序
新的设置 workbench.editor.focusRecentEditorAfterClose
允许您更改编辑器选项卡的关闭顺序。默认情况下,选项卡将按最近使用 (MRU) 顺序关闭。更改此设置允许从右到左关闭选项卡。
新的标题变量
在 window.title
设置中可以使用三个新变量
${activeFolderShort}
:文件所在的文件夹的名称。${activeFolderMedium}
:文件所在的文件夹的路径,相对于工作区文件夹。${activeFolderLong}
:文件所在的文件夹的完整路径。
输出面板
输出面板中的智能滚动行为现在更加高效。当您单击输出面板中的任意位置时,滚动会被锁定,当您单击最后一行时,滚动会被解锁。
屏幕广播模式
VS Code 中有一个新的 屏幕广播模式,它可以突出显示光标位置和击键。屏幕广播模式(开发人员:切换屏幕广播模式)对于演示目的非常有用。
编辑器
智能选择
我们致力于改进 选择 菜单中的 扩展选择 和 收缩选择 的实现。我们正在添加 API,以便语言服务器可以根据其语义知识指定选择步骤。此外,我们还改进了默认实现。
请继续关注,随着智能选择的改进,未来会有更多功能。使用 smart-select
标签查看我们正在进行的工作。
引用历史记录
现在,“引用”视图中有一个 引用:显示历史记录 命令。它会调出快速选择,其中包含以前的搜索,从而可以快速重新运行以前的搜索。
引用 CodeLens
选择引用 CodeLens 时,将打开速览编辑器。现在可以使用 references.preferredLocation
设置来控制此行为。其选项为 peek
和 view
,后者在新视图中显示引用。
代码片段描述
过去,在编写带有长描述的代码片段时,您被迫编写一个长字符串。不支持像 body
那样使用数组。现在这种情况已经改变,可以使用字符串数组编写长描述。
{
"prefix": "happy",
"body": "#Happy Coding!",
"description": ["First Line", "Second Line", "Third Line"]
}
移除了旧版搜索模式
20 个版本之前,我们开始使用 ripgrep 在 VS Code 中进行搜索。我们旧的基于 Node.js 的搜索实现仍然可以通过设置 search.useLegacySearch
获得。但正如近藤麻理惠所说,我们必须整理不再令人愉悦的东西。如果您一直在使用正则表达式功能(如反向引用或先行断言),请确保启用 search.usePCRE2
设置。
使用简单的文本编辑器以 JSON 格式编辑设置
与此类似,既然我们已经有了几个版本的设置 UI,我们正在研究简化 JSON 设置编辑体验。如果您通过打开 settings.json
文件,或单击设置 UI 中的 {}
按钮,或调用 首选项:打开用户设置 (JSON) 命令以 JSON 格式编辑设置,那么您将获得一个简单的 JSON 编辑器,而不是我们之前拥有的拆分 JSON 编辑器。您仍然可以使用 首选项:打开默认设置 (JSON) 命令查看默认设置列表。
如果您真的想念左侧带有默认设置的拆分 JSON 编辑器,则可以通过启用 workbench.settings.useSplitJSON
设置来恢复它。请注意,如果您喜欢,您始终可以以 JSON 格式编辑设置。
扩展的网络代理支持
设置 Http: 代理支持 (http.proxySupport
) 现在默认启用所有扩展的网络代理支持。
语言
TypeScript 3.3
我们现在附带 TypeScript 3.3.1。此 TypeScript 更新带来了一些重要的错误修复和改进。
移除 markdown.previewFrontMatter 设置
markdown.previewFrontMatter
设置已被移除。Markdown 预览现在始终隐藏 YAML 前言(这是 markdown.previewFrontMatter
的默认设置)。
Markdown 扩展程序(如 Markdown yaml Preamble 和 GitHub Markdown Preview)在预览中将前言呈现为表格。
语义选择
语义选择现在可用于 HTML、CSS/LESS/SCSS 和 JSON
集成终端
重排支持
现在,当终端水平调整大小时,终端将换行和取消换行。
Windows 上的 ConPTY 支持
通过 Windows ConPTY API 管理终端进程现在在 Windows Insiders Fast Ring(内部版本号 18309+)中作为可选选项提供。
{
"terminal.integrated.windowsEnableConpty": true
}
这将使用 Windows 控制台团队提供的 ConPTY 系统作为终端的后端。启用此功能应修复 Windows 终端的许多问题,尤其是在颜色支持、交互式应用程序以及本机支持 VT 序列的 shell 方面。
这是 WSL 终端中 256 ANSI 颜色支持的前后对比
用于链接的当前工作目录
在 Linux 和 macOS 上,终端现在将相对于当前工作目录而不是终端的初始目录解析链接。
终端查找改进
终端中的查找现在支持增量“边输边找”搜索,以及在单行上查找多个术语的功能。
commandsToSkipShell 设置的改进
以前,设置 terminal.integrated.commandsToSkipShell
是所有命令的列表,这些命令将跳过终端的评估,而是由 VS Code 处理。这很麻烦,因为您需要在设置文件中包含 100 多个命令才能更改它。现在已将其更改为添加和删除列表,因此您只需包含对默认列表的更改
{
"terminal.integrated.commandsToSkipShell": [
// Make ctrl+n open a new file when the terminal is focused
"workbench.action.files.newUntitledFile",
// Send ctrl+e to the terminal
"-workbench.action.quickOpen"
]
}
启用了新的缓冲区实现
在 v1.29 中引入的基于 TypedArray/ArrayBuffer 的终端缓冲区 在 v1.29 中引入 现在已打开,并且旧的实现已被移除。这应该可以很好地提高终端的吞吐量,并显着减少其内存占用。
调试和任务
自定义命令用户输入变量
上次里程碑中引入的 输入变量 是一种强大的机制,可以在任务或调试配置中请求用户输入。最初,我们提供了 promptString
和 pickString
输入变量。
在此里程碑中,我们引入了一种新的输入变量类型 command
,它在插入输入变量时运行任意命令。由于命令可以由扩展贡献,因此现在可以通过新的实现来扩展用户输入变量。
以下示例显示了如何在调试配置中使用类型为 command
的用户输入变量,该配置允许用户从特定文件夹中找到的所有测试用例列表中选择一个测试用例。假设某些扩展提供了 extension.mochaSupport.testPicker
命令,该命令可以在可配置的位置找到所有测试用例,并显示一个选择器 UI 来选择其中一个。
{
"configurations": [
{
"type": "node",
"request": "launch",
"name": "Launch Test",
"program": "${workspaceFolder}/${input:pickTest}"
}
],
"inputs": [
{
"id": "pickTest",
"type": "command",
"command": "extension.mochaSupport.testPicker",
"args": {
"testFolder": "${workspaceFolder}/tests"
}
}
]
}
任务输出支持拆分终端
您现在可以将任务配置为在拆分终端面板中显示输出,而不是创建新的终端面板。任务配置可以使用 presentation
部分中的 group
属性来定义应在何处显示任务的输出。
如果您同时运行以下两个任务,它们将在拆分终端中显示,以便您可以同时看到它们
{
"version": "2.0.0",
"tasks": [
{
"label": "Task One",
"type": "shell",
"command": "echo One && sleep 5000",
"problemMatcher": [],
"presentation": {
"group": "groupA"
}
},
{
"label": "Task Two",
"type": "shell",
"command": "echo Two && sleep 5000",
"problemMatcher": [],
"presentation": {
"group": "groupA"
}
}
]
}
预览功能
预览功能尚未准备好发布,但功能已足够使用。我们欢迎您在开发期间尽早提供反馈。
工作台的网格布局
工作台布局正在重新设计,以使用编辑器本身使用的相同网格布局。此处完成的工作不仅将简化长期维护工作台布局的工程工作,而且还将帮助我们点亮新的体验。
在此里程碑中,我们发布了一个这样的体验,以演示使用新的网格布局可以更轻松地实现的功能,即切换编辑器区域。启用实验性网格布局 ("workbench.useExperimentalGridLayout": true
) 后,有一个新的命令 切换编辑器区域,它可以隐藏代码编辑器。这允许您创建一个 VS Code 终端面板,该面板占据完整的编辑器区域,如下所示
如果您使用 code file.txt
从终端打开文件,它仍会像您期望的那样弹出编辑器。此功能仍在开发中,并且存在已知问题,但我们鼓励您查看并提交问题。您可以使用 此查询 随时了解有关此工作的最新问题。
HTML 和 CSS 自定义数据支持
由于此功能处于预览状态,因此设置、贡献点和数据格式可能会发生更改。
如今,前端开发人员经常使用 HTML/CSS 的超集进行编码
- Web 组件 允许自定义 HTML 元素,例如
<my-button type="alert"></my-button>
。 - PostCSS 允许自定义 CSS 属性,例如
size
和尚未标准化的 CSS 功能,例如:any-link
。 - 各种框架允许在源 HTML/CSS 中实现更大的灵活性。
在此迭代中,我们改进了 1.30 中引入的 HTML 自定义数据支持,并添加了 CSS 自定义数据支持。
- 使用
html.experimental.customData
或css.experimental.customData
加载自定义数据。(html.experimental.custom.tags
和html.experimental.custom.attributes
已被移除。) - 或者,将 JSON 与
contributes.html.experimental.customData
或contributes.css.experimental.customData
打包到扩展中。 - 最后,如果您正在编写使用 vscode-html-languageservice 或 vscode-css-languageservice 的语言服务器,则可以使用自定义数据创建语言服务。
自定义数据增强了 VS Code 对 HTML/CSS 的理解。例如,通过这些 HTML/CSS JSON 贡献,VS Code 可以为自定义 HTML 标记/属性和 CSS 属性/伪类提供完成和悬停提示
{
"version": 1,
"tags": [
{
"name": "my-button",
"description": "My button",
"attributes": [
{
"name": "type",
"description": "My button type",
"values": [{ "name": "alert" }]
}
]
}
]
}
{
"version": 1,
"properties": [
{
"name": "my-size",
"description": "Compiles down to `width` and `height`. See details at https://github.com/postcss/postcss-size."
}
],
"pseudoClasses": [
{
"name": ":my-link",
"description": ":any-link pseudo class. See details at https://preset-env.cssdb.org/features#any-link-pseudo-class."
}
]
}
以上示例可在 octref/simple-customdata 中找到,而功能更全面的示例可在 octref/svg-data 中找到。
这些指南解释了数据格式以及如何通过设置和扩展贡献点使用它们。
扩展创作
扩展更改事件
添加了一个新的事件 extensions.onDidChange
,当 extensions.all
数组更改时触发。当安装、卸载、启用或禁用扩展时,可能会发生这种情况。请参阅安装时无需重新加载部分。
/**
* An event which fires when `extensions.all` changes. This can happen when extensions are
* installed, uninstalled, enabled or disabled.
*/
export const onDidChange: Event<void>;
注意:引入新贡献点的扩展作者应侦听此事件,并相应地更新工作台的状态。
在浏览器中打开资源
我们观察到,一些扩展使用 node 模块(如 opn
或 open
)在浏览器中打开 URL。考虑到对此功能的需求,我们添加了一个新的 API vscode.env.openExternal
。它需要一个 URL,可用于打开网站链接、邮件链接或应用程序 URL 处理程序。此外,还接受文件 URL,以在其默认应用程序(如 PDF 文件)中打开它们。
// open default browser
await vscode.env.openExternal(
vscode.Uri.parse('https://github.com/microsoft/vscode/issues/66741')
);
注意:当前使用 opn
或 open
模块的扩展作者应切换到此新 API。
全局存储路径
现在为扩展提供了全局存储路径 ExtensionContext.globalStoragePath
,该路径指向具有写入/读取访问权限的本地目录。如果您需要存储可以从所有工作区访问的大文件,这是一个不错的选择。
/**
* An absolute file path in which the extension can store global state.
* The directory might not exist on disk and creation is
* up to the extension. However, the parent directory is guaranteed to be existent.
*
* Use [`globalState`](#_ExtensionContext.globalState) to store key value data.
*/
globalStoragePath: string;
当扩展被移除时,VS Code 会负责清理此路径。
注意:当前使用自定义文件系统位置来跨工作区存储状态的扩展作者应切换到此新 API。
CodeActionKind.intersects
CodeActionKind.intersects
方法对于检查 CodeActionProvider
是否应费心计算其代码操作很有用
import * as vscode from 'vscode';
export class OrganizeImportsProvider implements vscode.CodeActionProvider {
public provideCodeActions(
document: vscode.TextDocument,
range: vscode.Range,
context: vscode.CodeActionContext,
token: vscode.CancellationToken
): vscode.CodeAction[] {
// Only return organize imports actions if they were explicitly requested
// We can check this using `intersects`.
if (!context.only || !vscode.CodeActionKind.SourceOrganizeImports.intersects(context.only)) {
// Organize imports actions were not requested
return [];
}
// Organize imports was requested
...
}
}
contributes.resourceLabelFormatters
扩展现在可以贡献资源标签格式化程序,这些格式化程序指定如何在工作台的任何位置显示 URI。例如,以下是如何扩展可以为方案为 remotehub
的 URI 贡献格式化程序
"contributes": {
"resourceLabelFormatters": [
{
"scheme": "remotehub",
"formatting": {
"label": "${path}",
"separator": "/",
"workspaceSuffix": "GitHub"
}
}
]
}
这意味着所有具有 remotehub
方案的 URI 都将通过仅显示 URI 的 path
段来呈现,并且分隔符将为 /
。具有 remotehub
URI 的工作区将在其标签中带有 GitHub 后缀。
向键绑定添加参数
在 package.json
中定义键绑定时,您现在可以定义参数。执行后,这些参数将传递给命令。
在下面的示例中,它是:{foo: 1, bar: 2}
。
"keybindings": {
"key": "cmd+i",
"command": "myCommand",
"args": {
"foo": 1,
"bar": 2
}
}
完全控制 createTerminal 环境
新的设置 TerminalOptions.strictEnv
设置为 true 时,将完全不会对终端环境进行任何修改,而是将完全按照扩展传入的方式使用。
// This will create a terminal whose environment only contains the single value
// FOO=BAR.
const terminal = createTerminal({
name: 'Test terminal',
env: {
FOO: 'BAR'
},
strictEnv: true
});
Node.js 更新
VS Code 运行的 Electron 版本已更新,随之而来的是 Node.js 从 8.9
更新到 10.2.0
。所有扩展现在都将在这个较新版本的 Node.js 上运行。查看 Node v10.0.0 弃用,以获取 Node.js 10 中弃用的列表。
更新的 Octicons
我们将 Octicons 版本更新到 8.3.0,现在支持以下图标
$(arrow-both)
$(bold)
$(color-mode)
$(eye-closed)
$(fold-down)
$(fold-up)
$(grabber)
$(italic)
$(kebab-horizontal)
$(kebab-vertical)
$(note)
$(organization-filled)
$(person-filled)
$(project)
$(request-changes)
$(screen-full)
$(screen-normal)
$(smiley)
$(tasklist)
$(text-size)
$(unverified)
$(verified)
您可以阅读我们的文档以查看我们支持的图标的完整列表。有关更改的完整详细列表,请参阅 Octicon 更改日志。
建议的扩展 API
每个里程碑都附带新的建议 API,扩展作者可以试用它们。与往常一样,我们渴望收到您的反馈。以下是您试用建议的 API 必须执行的操作
- 您必须使用 Insiders 版本,因为建议的 API 经常更改。
- 您必须在扩展的
package.json
文件中包含以下行:"enableProposedApi": true
。 - 将最新版本的 vscode.proposed.d.ts 文件复制到您的项目中。
请注意,您不能发布使用建议的 API 的扩展。我们可能会在下一个版本中进行重大更改,我们永远不想破坏现有扩展。
SignatureHelpContext.activeSignatureHelp
建议的 SignatureHelpContext.activeSignatureHelp
字段跟踪先前活动的签名
import * as vscode from 'vscode';
class MySignatureHelpProvider implements vscode.SignatureHelpProvider {
provideSignatureHelp(
document: vscode.TextDocument,
position: vscode.Position,
token: vscode.CancellationToken,
context: vscode.SignatureHelpContext
): vscode.ProviderResult<vscode.SignatureHelp> {
// The active signature help when this provider was triggered or undefined if
// no signature help was active.
console.log(context.activeSignatureHelp);
...
}
}
提供程序可以使用它来跟踪在重新触发签名帮助提供程序之前选择了哪个重载。
自动修复和 CodeAction.isPreferred
Code Action API 为 VS Code 的快速修复(您在编辑器中看到的灯泡)提供支持。尽管给定的错误可能有很多快速修复,但通常其中一个快速修复是解决问题的最合理方法。例如,修复拼写错误通常比生成新字段更可能是修复方法
通过使用建议的 API,扩展可以在 CodeAction
上设置 isPreferred
,以指示它是解决底层问题的最合理方法。可以使用 自动修复 命令(⌥⌘.(Windows、Linux Shift+Alt+.))自动应用首选修复。
首选快速修复通常应
- 正确修复底层错误(而不是抑制它)。
- 成为解决错误的合理修复方法。
- 不要意外地执行广泛的操作。
重构代码操作也可以标记为首选,以指示它们是最合理的重构。例如,虽然可能有多个 提取常量 重构可用,但用户通常只想提取到最近的局部变量。如果该重构代码操作标记为 isPreferred
,则用户可以为其设置单个键绑定
{
"key": "ctrl+shift+r ctrl+e",
"command": "editor.action.codeAction",
"args": {
"kind": "refactor.extract.constant",
"preferred": true
}
}
修复所有源操作
提议的 source.fixAll
CodeActionKind
为可以自动修复文件中错误的功能扩展建立了一个约定。这种新的源操作类型类似于整理导入,并且可以轻松地为全部修复操作配置快捷键或在保存时启用自动修复。
// On save, run both fixAll and organizeImports source actions
"editor.codeActionsOnSave": {
"source.fixAll": true,
"source.organizeImports": true,
}
TSLint 扩展 已经使用这种提议的源操作类型来实现全部修复和保存时自动修复。
调试适配器协议
用于数据断点的提议调试适配器协议
作为 正在进行的数据断点(又名“监视点”)工作的后续步骤,我们在数据断点的调试适配器协议设计方面取得了一些进展。提议的 DAP 更改位于这个 分支 上,相应的 TypeScript API 可以在 数据断点提案 中找到。
如果您有兴趣在您的调试器扩展中支持数据断点,请查看 提案 并提供反馈。
实时主题编辑
在开发颜色主题扩展时,您可以在扩展开发主机窗口中实时看到颜色更改的应用效果。
文件图标主题也适用。
工程
Electron 3.0 更新和 Electron 4.0 探索
在这个里程碑中,我们完成了将 Electron 3 打包到 VS Code 中的探索,这是我们首次在稳定版中发布此 Electron 版本。这是一个主要的 Electron 版本,带有 Chrome 66 和 Node.js 10.x(与我们当前的 Chrome 61 和 Node.js 8.x 版本相比,这是一个巨大的飞跃)。
与此同时,我们开始探索更新到 Electron 4,我们希望很快将其推送到 Insiders 版本。
更好的性能信息
在此版本中,开发者:启动性能命令输出在编辑器中呈现,不再在 DevTools 中。这使其更易于阅读,并且可以更快地访问。此外,许多有关信息的问题已得到修复。
WinJS.Promise 移除 ✅
当 VS Code 刚开始时,JavaScript 与今天的情况大不相同。例如,当时没有原生 Promise,因此团队决定使用 WinJS.Promise
进行异步工作。今天,情况已有所不同:原生 Promise 已经真实存在,而 WinJS.Promise
已经过时。去年年中,我们开始努力从代码库中移除 WinJS.Promise
,我们在 12 月完成了这项工作。
严格的空值检查
我们继续 对 VS Code 主代码库进行严格的空值检查。感谢 您的帮助,在这个里程碑中,我们能够为大量测试文件启用严格的空值检查,从而消除了大量错误。
我们将在下一个里程碑中继续进行严格的空值检查工作。
扩展贡献
我们的团队维护或贡献了许多 VS Code 扩展。本月最值得注意的是
TSLint 支持
新的 TSLint 扩展现在支持使用 source.fixAll
代码操作在保存时自动修复。
"editor.codeActionsOnSave": {
"source.fixAll": true
}
我们建议所有已弃用的 TSLint (eg2.tslint) 扩展的用户迁移到新的 TSLint 扩展。
Stylus 语言支持
Stylus 语言扩展 现在使用来自 vscode-css-languageservice 的精选数据,以提供具有状态警告和语法文档的最新补全。
GitHub Pull Requests
在这个里程碑中,我们继续改进 GitHub Pull Requests 扩展。
以下是一些新功能
- GitHub 审阅支持。您现在可以将评论分组到 审阅 中,而不是仅仅单独添加它们。
- 当工作区是 GitHub 存储库时,当您加入 Live Share 会话时,该扩展可以无缝工作。
- 我们逐步将 GraphQL 引入到项目中,因此描述视图现在可以呈现更详细的拉取请求信息,并且扩展的整体性能得到了提高。
- 您现在可以在合并拉取请求时选择创建合并提交、压缩并合并或变基并合并。
- 性能改进。当您浏览拉取请求、文件更改和检出拉取请求时,我们减少了对 GitHub 的 API 调用和 git 操作,这使得扩展响应更快,尤其是在 Windows 上。
您可以在 vscode-pull-request-github 发布说明 中阅读扩展的完整发行说明。
新文档
Python Jupyter Notebooks
新的 使用 Jupyter Notebooks 主题介绍了如何从 VS Code 中打开、调试和导出 Jupyter Notebooks。
改进的 JavaScript 和 TypeScript 文档
我们更新了 JavaScript 和 TypeScript 文章,以确保它们是最新的并提供更多有用的信息。
JavaScript 和 TypeScript 页面现在提供了 VS Code 为这些语言提供的功能概述。这些功能的更详细说明和教程已移至目录中的Node.js / JavaScript 和 TypeScript 下的新页面。
更新的扩展 API 文档
对于扩展作者,VS Code API 文档已重写并移至其自己的目录。
在这里,您将找到以下文章:
值得注意的修复
- 7570:VS Code 无法离线打开
- 14372:扩展:需要在窗口之间传递禁用状态
- 34396:单 CPU VM 上的高 CPU 占用率
- 58167:操作系统恢复后,终端和迷你地图恢复纹理已损坏
- 59794:当 editor.accessibilitySupport 设置为“auto”时,终端屏幕阅读器支持不起作用
- 61649:调试无法读取未定义的属性“onError”
- 63832:调试扩展时无法附加到 lsp 服务器
- 64948:GDB C/C++ 调试器无法启动,并给出错误
- 65697:对于节点集群 fork 进程,具有 autoAttachChildProcesses 的调试 stopOnEntry 不起作用
- 66302:默认情况下,Ctrl + L 应该绑定到清除 repl
- 66681:虚拟文档未显示“选择进行比较”和“与所选内容比较”命令
此版本还包括 Microsoft 安全响应中心 CVE-2019-0728 的安全更新。
感谢
最后但同样重要的是,非常感谢!以下人员帮助使 VS Code 变得更好
对我们的问题跟踪的贡献。如果您想帮助我们管理收到的问题,请参阅我们的 社区问题跟踪 页面
- Alexander (@usernamehw)
- Simon Chan (@yume-chan)
- Prabhanjan S Koushik (@skprabhanjan)
- Eric Amodio (@eamodio)
- Christopher Leidigh (@cleidigh)
对 vscode
的贡献
- Alec Chan (@aechan):搜索:改进清除按钮行为 PR #63082
- Alexander Eyers-Taylor (@aeyerstaylor)
- Agustín Rodríguez (@agurodriguez):防止“报告问题”和“进程资源管理器”窗口以全屏模式打开 PR #64839
- Anirudh Rayabharam (@anirudhrb):修复了问题 65204:打开快捷键图标消失 PR #65968
- @asaf050:允许从终端上下文菜单中终止终端 PR #66535
- Chris Patterson (@chrisrpatterson):更新构建徽章 URL PR #67008
- Christian Alexander (@ChristianAlexander):添加对 git add -N 添加文件的显示处理 PR #59163
- Christian Flach (@cmfcmf):将 terminalGroup 添加到任务,以允许在拆分窗格中运行它们 PR #65973
- Christian Oliff (@coliff):EditorConfig.org 的 HTTPS 链接 PR #65358
- Danny Tuppeny (@DanTup):修复拼写错误:“accepeted” => “accepted” PR #64976
- @davidwu226:修复无效的 JSON。 PR #65447
- Donald Pipowitch (@donaldpipowitch):添加 .vscodeignore 语法高亮 PR #64960
- Thai Pangsakulyanont (@dtinth):在解析 tsconfig.json 时使用 jsonc.parse 而不是 JSON.parse,修复了当 tsconfig.json 包含注释时
-b
标志未激活的错误。 PR #67535 - Thien Do (@dvkndn):将 nvmrc 更新到 node 8 PR #67183
- Ashwin Ramaswami (@epicfaace)
- Phil (@flurmbo):检测 md 图像链接 PR #66958
- li zixiang (@fuafa):将严格空值检查添加到 findModel.test.ts PR #66436
- Gabriel Arjones (@g-arjones):修复 #59635 PR #60111
- @g1tman:当终端不可见时,调整大小时不要在终端中获取字体 PR #66781
- Gabriel DeBacker (@GabeDeBacker):允许终端创建忽略 VSCode 的进程环境 PR #64733
- Chris Ganga (@gangachris)
- 为 src/vs/base/test/common/async.test.ts 启用严格空值检查 PR #65442
- 为 ./vs/base/test/common/keyCodes.test.ts 启用严格空值检查 PR #65454
- 为 ./vs/base/test/common/octicon.test.ts 启用严格空值检查 PR #65458
- 为 ./vs/base/test/node/config.test.ts 启用严格空值检查 PR #65471
- 为 ./vs/base/test/common/event.test.ts 启用严格空值检查 PR #65444
- 为 ./vs/base/test/common/history.test.ts 启用严格空值检查 PR #65453
- 为 windowsFinder 启用严格空值检查 PR #65551
- 为查找控制器启用严格空值检查 PR #65553
- Gaurav Gupta (@gaurav5430):为 ./vs/platform/contextkey/test/common/contextkey.test.ts 启用严格空值检查 PR #65474
- Guy Waldman (@guywald1):[git] 添加从特定 ref 创建分支的命令 PR #59078
- Henk Mollema (@henkmollema):将版权年份更新为 2019 年 PR #65875
- Ilya Biryukov (@IlyaBiryukov):添加 Git 日志、globalConfig 和树差异 API PR #64826
- James Dinh (@jamesdinht):为 files test 启用严格空值检查 PR #65249
- James George (@jamesgeorge007):在用户代码片段中添加多行描述支持 PR #66159
- Jimi (Dimitris) Charalampidis (@JimiC):[主题] 添加重新加载主题而无需重启编辑器的功能 PR #66115
- Julia McGeoghan (@jkmdev)
- Joseph Duchesne (@josephduchesne):通过触发布局刷新以解决 xtermjs 错误,修复 #58159… PR #60221
- Josh Goldberg (@JoshuaKGoldberg)
- Krish De Souza (@Kedstar99)
- Kermit Xuan (@Kermit-Xuan)
- Claire (@krider2010):允许完全禁用或手动更新以及自动更新 PR #60973
- Kumar Harsh (@kumarharsh):fix(loc):修复透明颜色描述的不正确措辞 PR #66334
- Anton Marchenko (@marchenko-am):修复 #64379 - SimpleFindWidget 位置已更改(在隐藏状态下) PR #64558
- Mathias Rasmussen (@mathiasvr):HTML 代码片段:一致的 void 标签 PR #66072
- Maksymilian Barnaś (@maxbarnas):#61410 添加“在文件夹中查找”操作的快捷键 PR #61526
- Mrigank Krishan (@Mrigank11):请求将已知的大型文件夹添加到 .gitignore,修复 #44304 PR #44562
- J.M. Rütter (@mynetx):隐藏在术语拆分时短暂显示的未定义标题 PR #61981
- Néstor Hernández Ojeda (@nesukun):为强制推送添加条目到 scm/git 上下文菜单 PR #60387
- Noj Vek (Manoj P) (@nojvek):修复 #27107 - 用户终端的 cwd 用于链接 PR #64750
- Nuno Lopes (@nunottlopes):修复在 Windows 下带有空格的路径中在终端中运行活动文件的问题 PR #65331
- Oleg Voloshin (@oniondomes):为 workspaceStats test 启用严格空值检查 PR #65429
- Raul Piraces Alastuey (@piraces):将严格空值检查添加到 suggestMemory.test.ts PR #66754
- Prateek Singh (@punteek):为 simpleServices test 启用严格空值检查 PR #65571
- Rich Evans (@rcbevans):添加 xterm mouseleave 以关闭小部件 PR #66576
- Matthias Reitinger (@reima):修复快捷键列表标题行为的问题 (#_41558) PR #60217
- Romain Marcadier-Muller (@RomainMuller):当使用引用时,修复“tsc watch”任务 PR #67148
- Rudi Chen (@rudi-c):为 breadcrumbs.ts、outlineModel.ts、breadcrumbsModel.ts 启用 strictNullChecks PR #65062
- Segev Finer (@segevfiner)
- @SimonEggert:添加选项卡关闭顺序设置 PR #66635
- Prabhanjan S Koushik (@skprabhanjan)
- Tereza Tomcova (@the-ress):在 bootstrap.js 中正确处理 UNC 路径 PR #66128
- Tiago Ribeiro (@TiagoR98):功能 #24344 已实现 PR #65072
- Tyler James Leonhardt (@TylerLeonhardt):处理只有单引号但没有空格的边缘情况 PR #66359
- Alexander (@usernamehw)
- 为 Comparers test 启用严格空值检查 PR #65301
- 将对比度添加到检查 TM 小部件 PR #64495
- 为 quickOpenScorer test 启用严格空值检查 PR #65299
- 将光标移动到大括号内 PR #67164
- 排除/包含 commandsToSkipShell 而不是破坏用户设置文件 PR #66179
- 为 Notifications test 启用严格空值检查 PR #65291
- 为 snippetVariables test 启用严格空值检查 PR #65236
- 为 SplitView test 启用严格空值检查 PR #65307
- 在主题/图标主题过滤器后添加空格 PR #64745
- 为 GridView test 启用严格空值检查 PR #65305
- 当脏状态在顶部边框中突出显示时,完全隐藏选项卡关闭按钮 PR #64718
- Dipen Ved (@vedipen)
- @vemoo:修复命名多行问题模式解析 PR #65840
- Vladimir Kotikov (@vladimir-kotikov):添加在执行
git pull
之前自动暂存更改的选项 PR #59849 - Jeremy Shore (@w9jds):修复 #57910 - 添加自动获取超时设置 PR #59988
- Matthew Walinga (@walinga):在使用暂存行命令时暂存空行删除 PR #59974
- Yisrael Veller (@YisraelV)
对 vscode-eslint
的贡献
- Jonathan T L Lee (@Lee182):问题 529,添加了对 pnpm 的支持 PR #572
- Loune Lam (@loune):disable-eslint 修复和改进 PR #588
对 language-server-protocol
的贡献
- Laurent Tréguier (@LaurentTreguier):删除重复的 label 属性 PR #638
- Jason Axelson (@axelson):修复更新日志链接 PR #654
对 vscode-languageserver-node
的贡献
- Daniel McNab (@DJMcNab):
- Felix Becker (@felixfbecker):将 repository.directory 字段添加到 package.json PR #439
- Laurent Tréguier (@LaurentTreguier):修复配置不总是使用资源范围的问题 PR #446
- Aleksey Kladov (@matklad):在 readme 中提及
npm run symlink
PR #452
对 debug-adapter-protocol
的贡献
- Ben Jackson (@puremourning):将 vimspector 添加到实现列表 PR #21
- Sean Allred (@vermiculus):更正概述中的各种拼写错误 PR #22
对 vscode-vsce
的贡献
- Alexander (@usernamehw):为控制台消息添加颜色 PR #324
对 vscode-json-languageservice
的贡献
对 vscode-css-languageservice
的贡献
- Krister Kari (@kristerkari):不要警告 :export 块内的未知属性 PR #137
- Simon Chan (@yume-chan)
- Matthew Dean:支持 Less 根函数、查找、匿名 mixin PR #135
对 vscode-html-languageservice
的贡献
- Liam Newman (@bitwiseman):更新到 1.9.0-beta1 PR #43
对 vscode-generator-code
的贡献
- Aurélien Pupier (@apupier):遵循 markdownLint 指南进行换行 #154 PR #155
对 vscode-recipes
的贡献
- Alan Agius (@alan-agius4):docs:更新 ng test 命令 PR #179
- Bryan Chapel (@bryanchapel):更新 README.md PR #176
- @CannibalKush:修改 angular flow PR #177
- zhan ishzhanov (@janat08):拆分 JEST recipe 的参数 PR #174
对 localization
的贡献
有超过 600 名 Cloud + AI 本地化 社区成员在使用 Microsoft 本地化社区平台 (MLCP),其中约有 100 名活跃贡献者参与 Visual Studio Code。
我们感谢您的贡献,无论是提供新的翻译、对翻译进行投票还是提出流程改进建议。
这是 贡献者 的快照。有关该项目的详细信息,包括贡献者姓名列表,请访问项目站点:https://aka.ms/vscodeloc。
- 保加利亚语: Любомир Василев。
- 捷克语: Samuel Tulach。
- 丹麦语: Johan Fagerberg。
- 荷兰语: Jos Verlinde,Eric Algera。
- 芬兰语: Petri Niinimäki, Valtteri Vatanen。
- 法语: Mohamed Sahbi, Thomas Gouthière。
- 德语: Frank Lindecke, Hans Meiser, Jakob von der Haar, Sebastian Seidl。
- 希伯来语: Kyle Orin。
- 印地语: Satish Yadav, nirav adatiya, shaswat rungta, Dhanvi Kapila。
- 匈牙利语: Péter Nagy。
- 简体中文: 福永 叶, Xiangrui Kong, Licheng Ren, Young Bige, 文 陈, Y F, 彦佐 刘, 九鼎 谭。
- 印尼语: Azhe Kun。
- 意大利语: Michael Longo。
- 日语: nh, Masakazu TENMYO, 裕子 知念。
- 韩语: SeungJin Jeong。
- 挪威语: Stephan Eriksen。
- 波兰语: grzegorz m, Jakub Jedryszek。
- 葡萄牙语(巴西): Bruno Talanski, Alan Willian, Letticia Nicoli, Alessandro Fragnani, Cynthia Zanoni。
- 葡萄牙语(葡萄牙): Vitor Barbosa。
- 西班牙语: Engel Aguilar, José María Aguilar, julian3xl, Alvaro Enrique Ruano, Ing. Sergio Uziel Tovar Lemus, Mario Mendieta。
- 泰米尔语: Mani M。
- 土耳其语: Muhammed Emin TİFTİKÇİ。
- 乌克兰语: Did Kokos。
- 越南语: Việt Anh Nguyễn。