2018 年 11 月(版本 1.30)
更新 1.30.2:此更新解决了这些问题。
更新 1.30.1:此更新解决了这些问题。
下载:Windows:x64 | Mac:Intel | Linux 64 位:deb rpm tarball | 32 位:deb rpm tarball
欢迎使用 Visual Studio Code 2018 年 11 月发布版。此版本包含多项重大更新,希望您会喜欢,其中一些主要亮点包括:
- 多行搜索改进 - 无需使用正则表达式即可轻松创建多行搜索模式。
- Linux 上的自定义标题栏 - 自定义标题和菜单栏现在是 Linux 上的默认设置。
- 引用视图 - 查找所有引用视图包含最近搜索的历史记录。
- 代码片段注释变量 - 代码片段变量根据语言插入正确的注释。
- JS/TS 回调显示 - 现在您可以查看匿名回调的上下文。
- JSDoc Markdown 高亮 - 包括 JSDoc 中 Markdown 代码块的语法高亮。
- 简化调试配置 - 初始启动配置的更好默认值和快速选择 UI。
- 打开文件夹时运行任务 - 配置任务以便在首次打开项目文件夹时运行。
- 选择扩展版本 - 安装 Marketplace 扩展的早期版本。
如果您想在线阅读这些发行说明,请访问 code.visualstudio.com 上的更新页面。
发布说明按以下与 VS Code 重点领域相关的部分进行排列。以下是一些进一步的更新
- 工作台 - 菜单滚动和改进的溢出处理,一键打开 settings.json。
- 语言 - JS/TS 重命名现在处理解构,添加缺失的“new”快速修复。
- 调试 - 删除调试控制台,直接从 VS Code 进程资源管理器进行调试。
- 任务 - 清除任务终端,任务变量的用户输入,重新运行上次任务命令。
- 扩展作者 - 转到声明支持,新的签名帮助上下文。
Insiders:想尽快看到新功能吗?您可以下载每夜更新的 Insiders 构建版本,并第一时间尝试最新的更新。有关最新的 Visual Studio Code 新闻、更新和内容,请在 Twitter 上关注我们 @code!
工作台
多行搜索输入
上个月,我们添加了多行搜索支持。本月我们改进了搜索 UX,使其更易于使用。现在,您可以使用多行文本进行搜索,而无需编写正则表达式。在搜索框中键入 Shift+Enter 以插入新行,搜索框将展开以显示您的完整多行查询。您还可以将编辑器中的多行选择复制并粘贴到搜索框中。

Linux 上默认的自定义标题和菜单栏
在几个版本中,我们通过自定义标题和菜单栏改进了 Windows 上菜单的可访问性和主题性。虽然它在 Linux 上是可选的,但在本版本中将默认启用它。

要使用原生标题栏,您可以将 window.titleBarStyle 设置为 native。
可滚动菜单
启用自定义菜单栏后,菜单被限制在 VS Code 窗口内渲染。以前,菜单可能会被窗口边界截断。现在通过在需要时使上下文菜单可滚动来解决此问题。

菜单栏溢出菜单
当窗口宽度不足以同时容纳菜单栏和窗口标题时,菜单栏还会有一个新的溢出菜单 (...)。

移动的设置编辑器操作
设置编辑器操作(打开 settings.json、显示已修改设置等)已从设置编辑器内的 ... 菜单移动到编辑器标题栏。这使它们与其他编辑器类型保持一致,并且 打开 settings.json 现在只需单击带大括号 {} 按钮即可完成。键盘快捷键编辑器也进行了相同的更改。

引用视图
引用视图已完善,不再是预览功能。现在有两个命令:
- 查找所有引用,它会打开引用视图。
- 查看引用,它会在查看视图中打开引用。
引用视图在启动时隐藏,但一旦使用将保持可见。如果所有搜索结果都已清除,它将显示以前搜索的历史记录。

现在在视图顶部有一个结果摘要,以及一个用于清除和复制结果的上下文菜单。修复了许多错误,整体稳定性得到了改善。
编辑器
代码片段注释变量
有新的代码片段变量可以插入行注释或块注释,并遵循当前语言。对于块注释使用 BLOCK_COMMENT_START 和 BLOCK_COMMENT_END,否则使用 LINE_COMMENT。
下面的代码片段在 JavaScript 文件中插入 /* Hello World */,在 HTML 文件中插入 。
{
"hello": {
"scope": "javascript,html",
"prefix": "hello",
"body": "$BLOCK_COMMENT_START Hello World $BLOCK_COMMENT_END"
}
}
声明与定义
到目前为止,VS Code 提供了用于显示符号定义的命令,例如转到定义和查看定义。这没有考虑到某些语言在符号的声明和定义之间存在比其他语言更严格的区别。我们已经解决了这个问题,现在有转到声明和查看声明命令用于符号的声明。

转到声明等语言功能所需的数据由扩展计算,并且有一个新的 API,您可以在扩展创作部分阅读相关信息。
平滑光标动画
有一个新设置 editor.cursorSmoothCaretAnimation,它将在光标移动时启用过渡动画。
Git 集成
更改默认点击操作
现在,您可以更改在源代码管理视图中点击文件时的默认操作。默认情况下,VS Code 将打开差异视图,但通过将 git.openDiffOnClick 设置为 false,文件将在常规编辑器中打开。
提交时推送或同步
新设置 git.postCommitCommand 允许您在提交后推送或同步您的仓库。可用值为 none(默认)、push 和 sync。
语言
TypeScript 3.2
VS Code 现在包含 TypeScript 3.2.2。此版本带来了一些令人兴奋的新语言功能,包括 bind、call 和 apply 的严格类型,以及 BigInt 支持。TypeScript 更新还修复了一些重要错误,并包括新的工具功能和改进。
改进了 JavaScript 和 TypeScript 回调的显示
JavaScript 和 TypeScript 匿名回调以前在 Outline 视图、面包屑视图和文档符号列表中都标记为 <function>。这使得无法区分您真正想要哪个函数。

借助 TypeScript 3.2+,VS Code 现在为回调函数显示更多上下文,以便您可以区分它们。

重命名正确处理 JS/TS 解构
重命名现在处理 JavaScript 和 TypeScript 解构,并在需要时引入别名。

添加缺失的 new JS/TS 快速修复
实例化类时忘记 new?TypeScript 3.2 带来了一个新的快速修复来帮助您。

此快速修复适用于 TypeScript 和类型检查的 JavaScript。
JS/TS 路径建议的文件图标
在 VS Code 1.29 中的工作的基础上,IntelliSense 小部件现在显示 JavaScript 和 TypeScript 路径建议的文件图标。
![]()
JSDoc 注释中 Markdown 元素的高亮
JSDoc 块中的围栏代码块和其他 Markdown 元素现在进行语法高亮显示。

这种内联高亮更好地匹配了 VS Code 对 JSDoc 的 Markdown 渲染,用于悬停和 IntelliSense 文档。
调试
简化初始调试配置
在这个里程碑中,我们着手简化为最受欢迎的调试扩展生成的 launch.json 文件。我们的目标是让用户更轻松地启动和配置调试。这意味着隐藏不必要的启动配置属性,并使用快速选择 UI 来改善用户在生成初始 launch.json 时的交互。有关此工作的更多详细信息,请参见问题 #62851。
调试控制台可以删除
从上一个里程碑开始,当调试多个调试会话时,我们为每个会话显示多个调试控制台。现在,当相应会话不再活动时,可以通过清除该调试控制台的内容来删除这些控制台。我们没有添加用于管理调试控制台生命周期的显式命令,因为我们认为当前方法会更直观且更易于使用。
改进了调试配置的用户输入变量
我们改进并推广了提示用户输入的 launch.json 变量概念。您可以在任务部分找到详细信息。
从进程资源管理器调试
现在可以使用调试上下文菜单操作从 VS Code 进程资源管理器(开发人员:打开进程资源管理器)启动 Node.js 进程的调试。
下面您可以看到附加到从集成终端启动的 Node.js 进程。

Node/Chrome 调试
smartStep 现在默认启用
几个版本前,我们更改了 smartStep 的行为,使其更实用。使用 smartStep 可以获得更好的调试体验,尤其是对于 TypeScript,因此我们已将其行为更改为始终开启。
localRoot 的自动默认值
在 Node.js 远程调试场景中,调试配置属性 localRoot 现在自动默认为 ${workspaceFolder},只需指定 remoteRoot 即可。
任务
打开文件夹时运行
如果您有一个任务总是在打开文件夹时运行,您可以通过配置其 "runOn" 属性来使其在该文件夹打开时自动运行。我们发现这对于确保没有人破坏 VS Code 仓库中新的严格空检查非常有用。通过添加 "runOn": "folderOpen",所有允许自动运行任务的人都将在违反严格空检查时获得标记。
{
"type": "npm",
"script": "strict-null-check-watch",
"label": "TS - Strict Null Checks",
"isBackground": true,
"problemMatcher": {
"base": "$tsc-watch",
"owner": "typescript-strict-null",
"applyTo": "allDocuments"
},
"runOptions": {
"runOn": "folderOpen"
}
}
清除任务终端
要在执行任务之前清除终端,您可以将任务的 presentation 选项配置为 "clear": true。
{
"type": "gulp",
"task": "tslint",
"label": "Run tslint",
"presentation": {
"clear": true
}
}
重新运行任务
现在可以使用任务:重新运行上次任务命令 (workbench.action.tasks.reRunTask) 重新运行任务。默认情况下,重新运行任务将重新评估其运行变量,包括其输入。要使用在上次运行中已评估的变量,请配置 "reevaluateOnRerun" 选项。
{
"type": "gulp",
"task": "tslint",
"label": "Run tslint",
"runOptions": {
"reevaluateOnRerun": false
}
}
改进了任务和调试配置的用户输入变量
长期以来,VS Code 一直通过 ${variableName} 语法支持 tasks.json 和 launch.json 中的变量替换。
对于 launch.json,甚至可以使用提示用户输入的变量(例如 ${command:pickNodeProcess},它会打开一个基于快速选择的进程选择器)。此功能不适用于 tasks.json,并且基于命令的变量也有其他限制(参见问题 #9297、#9544 和 #30588)。
在此里程碑中,用户输入变量已通用化并得到改进,现在可用于 launch.json **和** tasks.json。此工作还将命令语法引入了 tasks.json。
对于用户输入变量,我们引入了一个新的变量类别 input,其语法为:${input:variableName}。这种简单的语法不足以向用户呈现有意义的 UI,因此我们在 launch.json 和 tasks.json 中引入了一个新的 inputs 部分,其中指定了额外的配置属性。
使用 Angular CLI 的示例

这是支持的属性列表:
id- 使用这些属性的相应变量名。type- 用户输入小部件的类型。在此版本中,支持promptString(用于字符串输入框)和pickString(用于字符串快速选择)。description- 向用户显示的描述性文本。default- 如果用户只是按下 Enter,则使用的默认值。
第一个示例展示了如何在任务配置 (tasks.json) 中使用用户输入变量。
{
"tasks": [
{
"label": "Echo input",
"type": "shell",
"command": "echo ${input:echoPrompt}"
}
],
"inputs": [
{
"id": "echoPrompt",
"description": "Please enter a value",
"default": "default echo text",
"type": "promptString"
}
]
}
另一个示例展示了用于在调试配置 (launch.json) 中选择两个选项之间的用户输入变量。
{
"configurations": [
{
"type": "node",
"request": "launch",
"name": "Launch Program",
"program": "${workspaceFolder}/${input:pickProgram}"
}
],
"inputs": [
{
"id": "pickProgram",
"description": "Select client or server",
"type": "pickString",
"options": ["client.js", "server.js"],
"default": "client.js"
}
]
}
我们计划将用户输入变量与现有基于命令的变量结合起来,以便用户输入变量可以由扩展贡献。
扩展
安装以前的版本
如果当前版本存在问题,您现在可以回溯到扩展的早期版本。VS Code 在已安装的扩展上提供了一个安装其他版本操作,它会显示可用版本的下拉列表。

无响应的扩展主机
VS Code 在单独的 Node.js 进程中运行扩展 - 扩展主机。这会将扩展代码与 VS Code 本身隔离,但它不会将不同的扩展相互隔离。由于 JavaScript 的单线程性质,扩展可能会有意或无意地独占扩展主机线程,阻塞所有其他扩展,并使操作看起来无响应。
VS Code 现在监视扩展主机,当它变得无响应时,VS Code 会开始分析扩展主机。当某个扩展被确定为无响应的原因时,会显示一个最小化的通知,鼓励用户提交问题。

作为用户,请留意状态栏中的铃铛图标,因为通知很小。作为扩展作者,如果您收到无响应问题,请查阅此指南,其中解释了发生的情况以及如何打开附加到问题的 CPU 配置文件。
预览功能
预览功能尚未准备好发布,但已足够实用。我们欢迎您在这些功能开发期间提供早期反馈。
HTML 自定义标签/属性支持
新的 html.experimental.custom.tags 和 html.experimental.custom.attributes 设置允许您指定 VS Code 在启动时加载的标签和属性列表。当您编辑 HTML 文件时,VS Code 将为这些标签和属性提供自动补全和悬停。这与Web Components配合得很好,例如:

您可以打开 octref/web-components-examples 仓库来测试此功能。此功能处于预览阶段,设置名称和 JSON 格式都可能更改。
如果您有反馈或功能请求,请在问题 #62976 中跟进。
扩展的网络代理支持
有一个实验性设置 Http: Proxy Support,用于为所有扩展启用网络代理支持。虽然我们仍在处理一些细节,但我们邀请您试用并告诉我们它是否对您有用。(请注意,启用网络代理支持目前破坏了 GitHub Pull-Request 扩展的登录。)

将其设置为 override 对于大多数设置应该最有效,如果效果不佳,请尝试 on 进行比较。
扩展开发
转到声明
我们添加了一个 DeclarationProvider 接口,扩展可以实现该接口以支持转到声明功能。声明提供程序应返回符号声明的位置。当为同一文件注册多个提供程序时,它们的结果将合并。
签名帮助上下文
SignatureHelpProviders 现在接受一个 context 参数,该参数提供有关如何触发签名帮助的信息。上下文包括:
- 签名帮助的触发方式(触发字符、命令或文档上下文更改)。
- 导致签名帮助触发的字符。
- 签名帮助在触发时是否已显示?
import * as vscode from 'vscode';
export function activate(context: vscode.ExtensionContext) {
vscode.languages.registerSignatureHelpProvider(
'markdown',
new (class implements vscode.SignatureHelpProvider {
provideSignatureHelp(
document: vscode.TextDocument,
position: vscode.Position,
token: vscode.CancellationToken,
context: vscode.SignatureHelpContext
): vscode.ProviderResult<vscode.SignatureHelp> {
// Return fake signature help result
const sigHelp = new vscode.SignatureHelp();
sigHelp.activeParameter = 0;
sigHelp.activeSignature = 0;
sigHelp.signatures = [new vscode.SignatureInformation(getLabel(context))];
return sigHelp;
}
})(),
{
triggerCharacters: ['('],
retriggerCharacters: [',']
}
);
}
function getLabel(context: vscode.SignatureHelpContext): string {
const parts = [];
// How was signature help triggered
switch (context.triggerKind) {
case vscode.SignatureHelpTriggerKind.Invoke:
parts.push('invoke');
break;
case vscode.SignatureHelpTriggerKind.ContentChange:
parts.push('change');
break;
case vscode.SignatureHelpTriggerKind.TriggerCharacter:
parts.push('character');
break;
}
// The character (if any) that caused signature help to be triggered
if (context.triggerCharacter) {
parts.push(context.triggerCharacter);
}
// Was signature help already showing when it was triggered again?
if (context.isRetrigger) {
parts.push('retrigger');
}
return parts.join(' ');
}
此外,SignatureHelpProviders 现在可以使用一组不同的触发字符和重新触发字符进行注册。重新触发字符仅在签名帮助已显示时才触发签名帮助。
这是上面 SignatureHelpProvider 的实际应用。

配置贡献的 TypeScript 服务器插件
扩展现在可以通过 VS Code 内置的 TypeScript 扩展提供的 API 将配置数据发送到贡献的 TypeScript 服务器插件。
// In your VS Code extension
export async function activate(context: vscode.ExtensionContext) {
// Get the TS extension
const tsExtension = vscode.extensions.gettsExtension(
'vscode.typescript-language-features'
);
if (!tsExtension) {
return;
}
await tsExtension.activate();
// Get the API from the TS extension
if (!tsExtension.exports || !tsExtension.exports.getAPI) {
return;
}
const api = tsExtension.exports.getAPI(0);
if (!api) {
return;
}
// Configure the 'my-typescript-plugin-id' plugin
api.configurePlugin('my-typescript-plugin-id', {
someValue: process.env['SOME_VALUE']
});
}
TypeScript 服务器插件通过 onConfigurationChanged 方法接收配置数据。
// In your TypeScript plugin
import * as ts_module from 'typescript/lib/tsserverlibrary';
export = function init({ typescript }: { typescript: typeof ts_module }) {
return {
create(info: ts.server.PluginCreateInfo) {
// Create new language service
},
onConfigurationChanged(config: any) {
// Receive configuration changes sent from VS Code
}
};
};
此 API 允许 VS Code 扩展将 VS Code 设置与 TypeScript 服务器插件同步,或动态更改插件的行为。请查看 TypeScript TSLint 插件和 lit-html 扩展,了解此 API 在实践中的使用方式。
自定义视图
用于向您的视图添加全部折叠操作的提议 API 现已稳定。
树项描述
您现在可以使用 TreeItem 中的 description 属性为您的树项添加描述。如果树项由资源支持,您还可以通过将 description 设置为 true 来让 VS Code 从资源派生描述。
/**
* A human readable string which is rendered less prominently.
* When `true`, it is derived from [resourceUri](#_TreeItem.resourceUri), and when `falsy`, it is not shown.
*/
description?: string | boolean;

调试 API
更丰富的 DebugSession
DebugSession API 现在显示工作区文件夹和已解析的调试配置。已解析意味着所有变量都已替换,并且平台特定的属性部分已针对匹配的平台“展平”,并已针对不匹配的平台删除。
断点的唯一 ID
Breakpoint 类现在显示一个在其整个生命周期内不变的唯一 ID (id)。
用于控制调试适配器创建的最终 API
在此里程碑中,我们最终确定了用于控制调试适配器创建的扩展 API。该 API 使用新的 DebugAdapterDescriptorFactory,必须为特定调试类型使用 vscode.debug.registerDebugAdapterDescriptorFactory 进行注册。工厂有一个方法 createDebugAdapterDescriptor,当需要调试适配器时,VS Code 会调用它。由于调试会话作为参数传递(并且会话现在显示工作区文件夹和已解析的配置),因此在请求创建调试适配器时,实现可以访问完整上下文。createDebugAdapterDescriptor 必须返回一个描述如何创建和/或连接到调试适配器的对象。
DebugAdapterExecutable描述符使 VS Code 将调试适配器作为每个会话的外部进程启动,并通过 stdin/stdout 与其通信。选项属性包可以指定工作目录和环境变量。DebugAdapterServer使 VS Code 连接到处理多个会话并通过套接字通信的服务器进程。
请注意:随着此 API 的最终确定,我们正在弃用旧的(提议的)API DebugConfigurationProvider.debugAdapterExecutable 和非常旧的基于命令的方法(贡献点 Debuggers,属性:adapterExecutableCommand)。请尽快从这些 API 迁移,因为我们计划在下一个版本中删除对它们的支持。
此代码片段展示了如何使用此 API 运行嵌入在其包含扩展中的调试适配器。
let server: Net.Server;
vscode.debug.registerDebugAdapterDescriptorFactory('mock', {
createDebugAdapterDescriptor(session: DebugSession, executable: DebugAdapterExecutable) {
// start server on launch of first debug session
if (!server) {
// start listening on a random port
server = Net.createServer(socket => {
const s = new MockDebugSession();
s.setRunAsServer(true);
s.start(<NodeJS.ReadableStream>socket, socket);
}).listen(0);
}
// make VS Code connect to debug server instead of launching debug adapter
return new DebugAdapterServer(server.address().port);
}
});
最终确定了调试适配器跟踪器 API
在此里程碑中,我们最终确定了用于跟踪 VS Code 和调试器扩展之间使用的 调试适配器协议 的扩展 API。该 API 使用新的 DebugAdapterTrackerFactory,必须使用 vscode.debug.registerDebugAdapterTrackerFactory 为调试类型注册。工厂有一个方法 createDebugAdapterTracker,VS Code 在开始与调试适配器通信之前会调用它。createDebugAdapterDescriptor 必须返回 DebugAdapterTracker 的实现(或 undefined 以防止跟踪)。
此代码片段展示了如何使用此 API 记录 Node.js 调试器的调试适配器协议。
vscode.debug.registerDebugAdapterTrackerFactory('node', {
createDebugAdapterTracker(session: DebugSession) {
return {
onWillReceiveMessage: m => console.log(`> ${JSON.stringify(m, undefined, 2)}`),
onDidSendMessage: m => console.log(`< ${JSON.stringify(m, undefined, 2)}`)
};
}
});
为了确保在需要时激活扩展,可以在 package.json 中使用激活事件 onDebugAdapterProtocolTracker:<debug type>。如果省略调试类型,则为所有调试类型激活扩展。
{
"activationEvents": ["onDebugAdapterProtocolTracker:node"]
}
调试适配器协议
runInTerminal 响应的新 shellProcessId 属性
如果调试适配器需要在一个终端中运行目标,它可以使用 DAP runInTerminal 请求。此请求可以选择返回目标进程的 processId,但实际上没有前端实现能够提供此信息。因此,我们引入了一个新属性 shellProcessId,用于返回终端 shell 的进程 ID(这更容易确定)。
剪贴板
剪贴板 API 已最终确定,现在所有扩展都可以使用。它允许扩展将字符串复制和粘贴到操作系统剪贴板。
补全项
当插入一个跨越多行的补全项时,VS Code 会调整缩进。这并非总是期望的,因此我们添加了 vscode.CompletionItem.keepWhitespace 来控制此行为。
符号提供程序的标签
注册文档符号提供程序时,现在可以提供标签 (DocumentSymbolProviderMetadata)。当文档具有多个符号提供程序时,此标签将显示在面包屑和 Outline 视图中。
提议的扩展 API
每个里程碑都附带新的提议 API,扩展作者可以试用它们。一如既往,我们渴望您的反馈。以下是试用提议 API 所需的操作:
- 您必须使用 Insiders 版本,因为提议的 API 经常更改。
- 您的扩展的
package.json文件中必须包含以下行:"enableProposedApi": true。 - 将最新版本的 vscode.proposed.d.ts 文件复制到您的项目中。
请注意,您不能发布使用提议 API 的扩展。我们很可能会在下一个版本中进行破坏性更改,我们绝不希望破坏现有扩展。
自定义视图支持消息文本
树视图消息
您现在可以使用 TreeView 中的 message 属性在树视图中设置消息。
/**
* An optional human-readable message that will be rendered in the view.
*/
message?: string | MarkdownString;

智能选择和扩展
我们添加了一个提议的 API 来支持智能选择功能。今天,当您运行扩展选择或收缩选择命令时,选择范围是根据弱启发式算法计算的。虽然我们正在努力改进这种启发式算法,但我们也希望让扩展作者参与进来。因此,我们添加了一个提议的 API,用于 SelectionRangeProvider。
工程
WinJS-Promise 移除
当 VS Code 启动时,JavaScript 还没有像现在这样。例如,当时没有原生 Promise,团队决定使用 WinJS.Promise。快进到今天,情况有所不同:原生 Promise 是真实的,WinJS.Promise 已过时。
因此,我们正在从 WinJS.Promise 迁移。由于 API 和运行时行为的差异,这不是一项容易的任务。我们从大约 10000 个 WinJS.Promise 引用开始,现在已减少到 1471 个,其中大约 500 个是实例化而不是纯类型注释。我们相信我们很快就会完成这段史诗般的旅程!
继续探索 Electron 3.0
在此里程碑中,我们继续探索将 Electron 3.0.0 打包到 VS Code 中。这是一个重要的 Electron 版本,包含 Chrome 66 和 Node.js 10.x(与我们当前版本中包含 Chrome 61 和 Node.js 8.x 相比,这是一个重大飞跃)。我们计划在 12 月向 Insiders 用户推出此更新,以收集更多反馈。如果您有兴趣提供帮助,请务必安装 VS Code Insiders。
社区问题追踪
社区长期以来一直定期帮助我们进行问题跟踪。随着提交的问题越来越多(目前平均每天 70 个),我们已经开始邀请最活跃的社区成员为他们正在处理的问题添加特定标签。由于 GitHub 没有细粒度的权限,我们正在使用我们的问题机器人来识别某些评论并为它们添加标签。请参阅下面的致谢部分。
严格空检查
我们对 VS Code 主要代码库进行严格空检查的工作仍在继续。我们现在正在对大约 800 个文件进行严格空检查,并将继续这项工作,直到整个代码库都被覆盖。
您可以在问题 #60565 中跟踪这项工程工作并了解更多有关该过程的信息。
对扩展的贡献
我们的团队维护或贡献了许多 VS Code 扩展。本月最值得注意的是
GitHub 拉取请求
在此里程碑中,我们致力于改进 GitHub 拉取请求扩展。
以下是一些新功能
- 直接从本地分支创建拉取请求。
- 建议在已检出的拉取请求上进行一系列源代码更改。
- 在拉取请求描述页面查看状态检查信息。
您可以在 vscode-pull-request-github releases 查看该扩展的完整发布说明。
值得注意的修复
- 37929: 创建调试环境下拉菜单时不激活调试器
- 60187: 调试器在 Jest 测试中无法命中断点
- 61590: 使设置和键绑定编辑器在显示编辑器操作时保持一致
- 62370: 改进编辑器中的诊断悬停
- 62500: 将“运行到光标”添加到命令面板
- 62778: 居中布局不恢复大小
- 63618: 调试 Electron 2.0.13 64 位失败,出现错误“无法连接到运行时进程,10000ms 后超时”。但在 Electron 32 位上成功
感谢
最后但同样重要的是,衷心感谢!以下帮助使 VS Code 变得更好的各位:
对我们问题跟踪的贡献
对 vscode 的贡献
- Adrien Becchis (@AdrieanKhisbe): 语法注入 - 考虑更广泛的范围 PR #50534
- David Bailey (@davidbailey00): 从 URL 处理程序桌面文件中删除 StartupWMClass PR #63750
- Anuj (@desaianuj): representation 而不是 presentation PR #63477
- Donald Pipowitch (@donaldpipowitch): 添加 .hintrc 并将 .babelrc 移动到 jsonc 语法 PR #63759
- Eric Amodio (@eamodio)
- Alexandr Fadeev (@fadeevab): 根据最新语法更新 makefile 着色测试 PR #61961
- Guillaume Poussel (@gpoussel): 修复 #62278: IPv6 链接支持 PR #62293
- Aleksandr Filatov (@greybax): 修复问题 #46816 PR #60404
- Napoleon Oikonomou (@iamnapo): 如果存在,则显示 README 而不是欢迎页面 PR #60061
- Raul Humberto Lopez Lopez (@iBlackShadow): 当搜索因选项更改而触发时,向搜索历史添加一个条目 PR #61993
- Andrii Dieiev (@IllusionMH): 选项来控制搜索结果中的操作对齐方式 PR #63457
- joan xie (@infinnie): 菜单水平对齐 PR #61454
- Matt Q (@irrationalRock): 修复 #34345 - 添加了在文件末尾/文件顶部添加多个光标的命令 PR #50312
- Jeffrey (@JeffreyCA)
- @jokurz: 自动检测 ksh 脚本为 shellscript PR #62838
- karan verma (@karanisverma): 修复: #55946 添加了注释代码片段变量 PR #63572
- Krish De Souza (@Kedstar99): 修复了 updateService.linux.ts 中的 checkForSnapUpdate 以正确识别 snap 版本 PR #63716
- Benjamin Lannon (@lannonbr): 添加了将扩展信息输出到剪贴板的功能 PR #56514
- Luo Wenqing (@laphets): 修复启用 autoNavigateNextConflict 时上次合并冲突警告 PR #62788
- Matthew Leon (@leonm1): 修复 #62785 调试控制台 copyAll 中的空行 PR #62823
- Bruno Logerfo (@Logerfo): keyboardMapperTestUtils 的严格空检查 PR #63027
- Mathias Rasmussen (@mathiasvr): 修复 #60002 撤销上次提交:保留暂存文件 PR #60104
- Matt Crupi (@mmcru): 修复 #63295: 在 Linux 保存错误消息中提及 Sudo PR #63394
- Philip Arola (@philiparola): 将设置屏幕中的“overwrite”更改为“override” PR #61926
- Samuel Toriel (@riltsken): [修复] #27649 将 intellisense 文档小部件固定到顶部 PR #62115
- Ryan Scott (@rscott): 添加 Git:Fetch (prune) PR #59735
- Prabhanjan S Koushik (@skprabhanjan)
- SlaneR (@slaner): 修复注释中的拼写错误 PR #62117
- Thomas Struller-Baumann (@Thomas-S-B): 删除了不必要的类型转换 PR #63947
- Alexander (@usernamehw)
- Konrad Borowski (@xfix): 修复快照加载器中意外的 fallthrough PR #62294
- Yisrael Veller (@YisraelV)
对 vscode-vsce 的贡献
- Nikolay Kondratyev (@kondratyev-nv): 修复带特定版本的发布 PR #307
对 vscode-eslint 的贡献
对 language-server-protocol 的贡献
- Jan Keromnes (@jankeromnes): 小改进:错别字、语法、措辞。 PR #579
- Adolfo Ochagavía (@aochagavia): 修复规范中的拼写错误 PR #597
对 vscode-languageserver-node 的贡献
- Remy Suen (@rcjsuen): 通过 DefinitionLink 提供有关符号的元数据 PR #415
- Guillaume Martres (@smarter): 将 asVersionedTextDocumentIdentifier 添加到 Converter 接口 PR #421
对 vscode-html-languageservice 的贡献
对 vscode-generator-code 的贡献
- Graham Bartley (@grabartley): 当不创建 git 仓库时,不再创建 git 相关文件 PR #141
对 debug-adapter-protocol 的贡献
- Danny Tuppeny (@DanTup): 修复 Dart 插件的链接 PR #16
对 vscode-chrome-debug-core 的贡献
- @digeff: 不要为存储源发送 src 更改事件 PR #378
- Shennie Yao (@Shenniey)
对 vscode-chrome-debug 的贡献
- Shennie Yao (@Shenniey): 为 chrome 命令行开关添加运行时 args 遥测 PR #749
- Leslie Leigh (@shrinktofit): 修复 targetTypes 选项 PR #760
对 vscode-azure-account 的贡献
- Yujin Hong (@yujhongmicrosoft): 添加对主权国家/地区的登录支持 PR #79
- Zhe Li (@Sneezry): 修复 Azure China 登录问题 PR #104
- Mateus Amin (@MateusAmin): 使用设置更新 README PR #107
对 vscode-recipes 的贡献
- Damon Jablons (@blackrobot): 清理 Python 配方的 Markdown 格式 PR #172
- Vinícius Salomão (@vizeke): 使用 vscode 运行和调试 PHP PR #169
对 localization 的贡献
Transifex VS Code 项目团队中有近 1400 名成员,每月约有 100 名活跃贡献者。我们感谢您的贡献,无论是提供新的翻译、对翻译进行投票还是提出流程改进建议。
以下是此版本的贡献者快照。有关项目(包括贡献者名单)的详细信息,请访问项目网站:https://aka.ms/vscodeloc。
- 保加利亚语:Любомир Василев。
- 加泰罗尼亚语: Adolfo Jayme-Barrientos、Enric Soler Rastrollo (MaDDoGo)、Oriol Torrillas。
- 捷克语: Vít Staniček、Ondra Kalousek、Kryštof Černý。
- 丹麦语: Johan Fagerberg。
- 芬兰语: Feetu Nyrhinen、Jussi Palo、Ahto Simakuutio。
- 法语: Antoine Griffard、Thierry DEMAN-BARCELO、Adrien Clerbois。
- 德语: Carsten Kneip。
- 希腊语: George Xenakis、Christos Koutsiaris、dimipapaioan。
- 印地语: Anand Chalakkal Jose Mohan、Kiren Paul、Ashwini Gupta、amgusain、Pointless Banter、Shaswat Rungta、Adnan Shaikh、Shashida Nand Jha。
- 匈牙利语: Tar Dániel.
- 简体中文: feiyun0112 feiyun0112、Tingting Yi、XIANG ZUO、Tony Xia、G.Y. Z、Dave Young、Jessica Zhang、驰 雷、Liam Kennedy、bh wu、WangCG duoduobear、ziqiang sun、正元 刘、越 郑、peng wei、xiong Fu、吉姆 舒、瑜 周、仁松 陈、Jiang LI。
- 繁体中文: Winnie Lin、Duran Hsieh、Hans Chiu、Alan Liu。
- 印尼语: Laurensius Dede Suhardiman、Wildan Mubarok、Joshua Siagian、Rizki A. Wibowo。
- 日语: Satoshi Kajiura、Shunya Tajima、Yuichi Nukiyama、Yoshihisa Ozaki、dkp sk、Hiroyuki Mori。
- 卡纳达语: Sanjay !、Sushmit Patil。
- 马拉雅拉姆语: Kiren Paul、Anand Chalakkal Jose Mohan。
- 挪威语: Espen Klein Nilsen、Ivar L、Simen Dæhlin、Daniel Bjørnbakk。
- 波兰语: Artur。
- 葡萄牙语(巴西): Danilo Dantas、Thiago Custodio、Vinicius Ribeiro、Lucas Santos、Gabriel Henrique Oliveira de Mello。
- 罗马尼亚语: Szauka。
- 俄语: Mikhail Zabaluev、Acupofspirt、Ilya Umnov。
- 僧伽罗语: Anand Chalakkal Jose Mohan。
- 西班牙语: Jorge Serrano Pérez、Alejandro Medina、Alberto Poblacion、Carlos Longarela、Carlos Mendible、Guillermo Callaghan、Alfonso Jesus Flores Alvarado、Andy Gonzalez。
- 泰米尔语: Vijay Nirmal、Avinash、Jeyanthinath Muthuram、Narayanan Singaram。
- 泰卢固语: Raja Tirumala Rao Guna。
- 土耳其语: Eyüp DALAN、Mustafa Turhan、Türker YILDIRIM。
- 越南语: Nguyễn Nhật Tân。