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。
您还可以观看云开发人员倡导者 Brian Clark 制作的此 1.31 版本亮点视频。
发行说明按以下与 VS Code 重点领域相关的部分进行排列。以下是一些其他更新
- 工作台 - 禅模式隐藏行号,新的屏幕录制模式显示按键。
- 编辑器 - 智能选择改进,调整引用 CodeLens 位置。
- 集成终端 - Windows 上的 ConPTY 支持,查找改进。
- 扩展编写 - 扩展更改事件,在浏览器操作中打开资源。
内部人员:想要尽快看到新功能?您可以下载每日内部人员构建版本,并在可用时立即尝试最新的更新。有关最新的 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 中的应用程序图标以关闭
由于技术上的权衡,默认情况下,在 Windows 和 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 个版本之前,我们开始在 VS Code 中使用 ripgrep 进行搜索。我们旧的基于 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 frontmatter(这是 markdown.previewFrontMatter
的默认设置)。
诸如 Markdown yaml Preamble 和 GitHub Markdown Preview 之类的 Markdown 扩展会将 frontmatter 作为表格呈现在预览中。
语义选择
语义选择现在可用于 HTML、CSS/LESS/SCSS 和 JSON
集成终端
重排支持
当终端水平调整大小时,现在将自动换行和取消换行。
Windows 上的 ConPTY 支持
通过 Windows ConPTY API 管理终端进程现在可以在 Windows 快速通道预览版(版本号 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 的终端缓冲区现在已启用,并且旧的实现已被移除。这应该可以大大提高终端的吞吐量,并显著减少其内存占用。
调试和任务
自定义命令用户输入变量
上次里程碑中引入的 输入变量是一种强大的机制,可以在任务或调试配置中请求用户输入。最初,我们提供了 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 Components 允许自定义 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>;
注意:引入新贡献点的扩展作者应监听此事件,并相应地更新工作台的状态。
在浏览器中打开资源
我们观察到一些扩展使用诸如 opn
或 open
之类的 Node 模块在浏览器中打开 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 版本。
更好的性能信息
在此版本中,**开发人员:启动性能**命令输出显示在编辑器中,不再显示在开发人员工具中。这使其更易于阅读且速度更快。此外,信息方面的许多问题已得到修复。
删除 WinJS.Promise ✅
当 VS Code 开始时,JavaScript 并非今天的样子。例如,没有本机 Promise,因此团队决定使用 WinJS.Promise
进行异步工作。今天,情况有所不同:本机 Promise 是真实的,而 WinJS.Promise
已过时。去年年中,我们开始努力从代码库中删除 WinJS.Promise
,我们在 12 月完成了此操作。
严格的 null 检查
我们继续努力严格的 null 检查 VS Code 主代码库。感谢 您的帮助,在此里程碑中,我们能够为大量测试文件启用严格的 null 检查,从而消除了大量错误。
我们将在下一个里程碑中继续严格的 null 检查工作。
对扩展的贡献
我们的团队维护或贡献了许多 VS Code 扩展程序。本月最值得注意的是
TSLint 支持
新的 TSLint 扩展程序现在使用 source.fixAll
代码操作支持保存时自动修复。
"editor.codeActionsOnSave": {
"source.fixAll": true
}
我们建议已弃用的 TSLint (eg2.tslint) 扩展程序的所有用户迁移到新的 TSLint 扩展程序。
Stylus 语言支持
Stylus 语言扩展程序 现在使用 vscode-css-languageservice 中精心策划的数据,以提供具有状态警告和语法文档的最新完成。
GitHub 拉取请求
在此里程碑中,我们继续改进 GitHub 拉取请求 扩展程序。
以下是一些新功能
- 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 虚拟机上的高 CPU 占用率
- 58167:在恢复操作系统后,终端和小地图的恢复纹理会损坏
- 59794:当 editor.accessibilitySupport 设置为“auto”时,终端屏幕阅读器支持不起作用
- 61649:调试无法读取未定义的属性“onError”
- 63832:调试扩展时无法附加到 lsp 服务器
- 64948:GDB C/C++ 调试器无法启动,出现错误
- 65697:对于节点集群派生的进程,使用 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 添加严格 null 检查 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 启用严格 null 检查 PR #65442
- 为 ./vs/base/test/common/keyCodes.test.ts 启用严格 null 检查 PR #65454
- 为 ./vs/base/test/common/octicon.test.ts 启用严格 null 检查 PR #65458
- 为 ./vs/base/test/node/config.test.ts 启用严格 null 检查 PR #65471
- 为 ./vs/base/test/common/event.test.ts 启用严格 null 检查 PR #65444
- 为 ./vs/base/test/common/history.test.ts 启用严格 null 检查 PR #65453
- 为 windowsFinder 启用严格 null 检查 PR #65551
- 为 find controller 启用严格 null 检查 PR #65553
- Gaurav Gupta (@gaurav5430):为 ./vs/platform/contextkey/test/common/contextkey.test.ts 启用严格 null 检查 PR #65474
- Guy Waldman (@guywald1):[git] 添加从特定引用创建分支的命令 PR #59078
- Henk Mollema (@henkmollema):将版权年份更新为 2019 PR #65875
- Ilya Biryukov (@IlyaBiryukov):添加 Git 日志、globalConfig 和树差异 API PR #64826
- James Dinh (@jamesdinht):为 files test 启用严格 null 检查 PR #65249
- James George (@jamesgeorge007):在用户代码片段中添加多行描述支持 PR #66159
- Jimi (Dimitris) Charalampidis (@JimiC):[主题] 添加无需重启编辑器即可重新加载主题的功能 PR #66115
- Julia McGeoghan (@jkmdev)
- Joseph Duchesne (@josephduchesne):通过触发布局刷新来解决 xtermjs 的 bug,修复了 #58159 PR #60221
- Josh Goldberg (@JoshuaKGoldberg)
- Krish De Souza (@Kedstar99)
- Kermit Xuan (@Kermit-Xuan)
- Claire (@krider2010):允许完全禁用或手动更新,以及自动更新 PR #60973
- Kumar Harsh (@kumarharsh):修复(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 测试启用严格的 null 检查 PR #65429
- Raul Piraces Alastuey (@piraces):向 suggestMemory.test.ts 添加严格的 null 检查 PR #66754
- Prateek Singh (@punteek):为 simpleServices 测试启用严格的 null 检查 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 测试启用严格的 null 检查 PR #65301
- 将对比度添加到检查 TM 小部件 PR #64495
- 为 quickOpenScorer 测试启用严格的 null 检查 PR #65299
- 将光标移动到括号内 PR #67164
- 排除/包含 commandsToSkipShell,而不是破坏用户设置文件 PR #66179
- 为 Notifications 测试启用严格的 null 检查 PR #65291
- 为 snippetVariables 测试启用严格的 null 检查 PR #65236
- 为 SplitView 测试启用严格的 null 检查 PR #65307
- 在主题/图标主题过滤器后添加空格 PR #64745
- 为 GridView 测试启用严格的 null 检查 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):Issue 529,添加对 pnpm 的支持 PR #572
- Loune Lam (@loune):disable-eslint 的修复和改进 PR #588
对 language-server-protocol
的贡献
- Laurent Tréguier (@LaurentTreguier):删除重复的 label 属性 PR #638
- Jason Axelson (@axelson):修复 changelog 链接 PR #654
对 vscode-languageserver-node
的贡献
- Daniel McNab (@DJMcNab):
- Felix Becker (@felixfbecker):向 package.json 添加 repository.directory 字段 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 根函数、查找、匿名混入 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):文档:更新 ng test 命令 PR #179
- Bryan Chapel (@bryanchapel):更新 README.md PR #176
- @CannibalKush:修改 Angular 流程 PR #177
- zhan ishzhanov (@janat08):为 JEST 配方拆分参数 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。