2019年7月(版本1.37)
更新 1.37.1: 此次更新解决了这些问题。
下载:Windows: x64 | Mac: Intel | Linux: deb rpm tarball snap
欢迎来到2019年7月发布的Visual Studio Code。此版本中有许多更新,我们希望您会喜欢,一些关键亮点包括:
- 完整产品图标更新 - 在VS Code中全面更新为现代图标。
- 在设置界面中编辑字符串数组 - 直接从设置编辑器中添加到字符串数组。
- 在文件资源管理器中显示搜索结果 - 快速跳转到文件资源管理器中的文件位置。
- Show whitespace in selection - 仅查看选定文本中的空白字符。
- 查找和替换保留大小写 - 替换文本而不丢失字母大小写。
- 终端搜索用户体验改进 - 更直观的自下而上搜索顺序,适用于终端。
- 更好的 SCSS @import 导航 - VS Code 现在会检查更多 SCSS 文件的位置。
- 远程开发教程 - 新的教程,用于通过SSH和在WSL中工作。
如果您想在线阅读这些发布说明,请访问更新在code.visualstudio.com上。
您还可以查看由开发者倡导者Brian Clark制作的1.37版本亮点视频。
内部人员:想要尽快看到新功能吗?您可以下载每晚的内部人员版本,并在更新可用时立即尝试最新更新。要获取最新的Visual Studio Code新闻、更新和内容,请在Twitter上关注我们@code!
工作台
新产品图标
我们已经更新了所有产品图标,使其在风格、颜色和大小上保持一致。我们经历了多次迭代,社区在每一步都提供了宝贵的反馈。
注意: 这不包括我们对Octicons的使用,这些图标出现在状态栏和快速选择中。
![]()
设置编辑器对字符串数组的支持
设置编辑器现在允许编辑字符串数组设置。添加项目按钮将弹出一个输入框以添加新字符串。

扩展作者可以通过贡献一个配置来启用此支持,该配置包含type和items键:
{
"type": "array",
"items": {
"type": "string"
}
}
从设置文件中移除警告
您将不再在settings.json文件中看到未知或不支持的设置的警告。相反,非活动设置将变淡,类似于未使用的源代码,悬停时会解释原因。此外,您不会看到当前禁用的扩展程序的设置的警告。

在资源管理器中显示搜索结果
搜索视图中的文件上下文菜单现在有一个在资源管理器中显示命令,用于在文件资源管理器中导航到该文件。

搜索正则表达式功能
在1.29版本中,我们添加了设置search.usePCRE2以使搜索使用PCRE2正则表达式引擎。这使得可以使用一些高级的正则表达式功能,例如反向引用和前瞻断言。由于ripgrep中的一些上游工作,您现在可以在不启用特殊设置的情况下使用这些功能。如果正则表达式使用了Rust正则表达式引擎不支持的功能,ripgrep将自动回退到PCRE2引擎,并且search.usePCRE2现在已被弃用。提醒一下,VS Code仅支持在JavaScript中有效的正则表达式,因为打开的编辑器仍然使用基于JavaScript的搜索进行搜索。
默认可见的NPM脚本资源管理器
以前,您必须启用设置npm.enableScriptExplorer才能使NPM脚本资源管理器可见,这很难发现。现在,当工作区根目录中有package.json文件时,NPM脚本资源管理器会以折叠状态显示在文件资源管理器中。

当你的工作空间根目录中没有package.json时,你仍然可以使用设置来启用NPM脚本资源管理器。如果你想隐藏资源管理器,你可以右键点击其标题并从上下文菜单中选择隐藏。
focusedView 上下文键
有一个新的键绑定 when 子句上下文键,focusedView,用于在给定视图获得焦点时显示或启用命令。
"when": "focusedView == nodeDependencies"
可访问性改进
我们修复了整个工作台的可访问性问题。修复问题的完整列表可以在GitHub上找到,使用'accessibility' 标签。
树视图中采用的新树部件
提供树视图的扩展现在将获得新树部件体验。树部件提供了更好的性能以及改进的键盘导航、过滤、自定义缩进、水平滚动等功能。如果您喜欢的扩展有自定义树视图,您应该会看到与之前添加到内置VS Code资源管理器中的相同用户体验改进。
编辑器
显示选择中的空白字符
editor.renderWhitespace 设置现在支持一个 selection 选项。设置此选项后,空白字符将仅在选定的文本上显示:

这对于快速检查空白而不填满整个编辑器非常方便。
改进的小地图搜索结果可见性
在之前的版本中,我们在小地图(代码大纲)中引入了搜索装饰。这些装饰很难看到,因此在这个迭代中,我们致力于提高它们的可见性。现在,整个行将以低透明度在小地图中高亮显示,而实际匹配将以高透明度显示。

你也可以使用新的minimap.findMatchHighlight主题颜色来更改装饰的颜色。
在查找和替换中保留大小写
现在,在编辑器的查找小部件中进行替换时,您可以保留大小写。当在编辑器的替换输入框中打开保留大小写选项(AB 按钮)时,此功能将启用。

目前 VS Code 仅支持保留全大写、全小写和标题大小写。

在查找小部件中切换按钮活动状态
我们已经更新了查找小部件的按钮切换活动状态,使用填充背景,以便您现在可以轻松地识别何时聚焦在活动切换上。这出现在搜索视图、查找和替换以及终端查找中。
通过这次更新,我们引入了一个新的主题颜色,inputOption.activeBackground,用于控制切换活动状态的背景颜色。该颜色重用了focusBorder,以便默认情况下更好地与主题配合。我们还将inputOption.activeBorder的默认值设置为透明,以便边框仅用于焦点状态。

更新信息颜色
在警告颜色统一之后,我们还更新了editorInfoForeground和editorInfoBorder以匹配其他信息诊断颜色。您将在Peek错误视图和编辑器波浪线中看到这个更新后的颜色:

集成终端
搜索用户体验改进
以前在终端内搜索会从终端视口的顶部开始并向下搜索。当到达底部时,它会回到顶部。新的行为与其他几个终端模拟器一致,从缓冲区的底部开始并向上搜索,从而带来更少的迷失感。

终端可访问性改进
终端现在在使用屏幕阅读器时具有行导航模式,可以通过和方便地导航行。可以使用退出该模式。
如果你想自定义键绑定,以下是新的命令:
workbench.action.terminal.navigationModeExit
workbench.action.terminal.navigationModeFocusNext
workbench.action.terminal.navigationModeFocusPrevious
还进行了其他可访问性改进:
- 现在使用不间断空格字符代替显式字符串来表示空白行,使得屏幕阅读器能够正确宣布。
- 屏幕阅读器现在会在输入和删除字符时进行播报。在某些情况下,这可能不会起作用,但大多数情况都已涵盖。
设置中解析的变量
Variables 现在可以在以下设置中使用:
terminal.integrated.cwd
terminal.integrated.shell.<platform>
terminal.integrated.shellArgs.<platform>
例如,您不再需要扩展来在当前文件的文件夹中打开终端,只需添加此设置:
"terminal.integrated.cwd": "${fileDirname}"
改进的错误报告和诊断
以前,当终端启动时配置错误时,它只会显示进程以错误代码退出。现在提供了更好的错误信息,指导用户解决几种常见情况。

语言
改进的 SCSS @import 导航
VS Code 过去用于静态解析 SCSS 导入。例如,@import './foo' 会解析为 _foo.scss。然而,SCSS 在解析导入时更加灵活,允许 ./foo 解析为以下五个位置之一:
foo.scss_foo.scssfoo/index.scssfoo/_index.scssfoo.css
VS Code 现在会解析 @import './foo' 到这些位置之一,如果解析的文件存在于磁盘上。请注意,如果链接以 / 结尾,它只会解析到 /index.scss 或 /_index.scss。如果链接以 .css 或 .scss 等后缀结尾,VS Code 将不会尝试其他文件位置。
改进的CSS属性值补全
CSS 补全现在为额外的 754 个 CSS 属性值提供了详细的文档,包括较少使用的值。

更快地使用JavaScript和TypeScript的仅语法功能
上一个版本,我们添加了一个实验性设置,将支持VS Code的JavaScript和TypeScript语言功能的TypeScript服务器拆分为单独的语法和语义服务器。
随着VS Code 1.37的发布,拆分服务器现在默认启用。这意味着对于大型JavaScript和TypeScript项目,基于语法的操作,如代码折叠或文档大纲,应该可以更快地使用。
任务
TypeScript 检测到任务警告
在上一个版本中,TypeScript 任务的自动检测从使用特定于操作系统的路径分隔符更改为更跨平台友好的 /。如果 tsconfig 路径中存在 \\,VS Code 现在会显示警告。
{
"type": "typescript",
"tsconfig": "src\\tsconfig.json", // This will cause a warning to show. It should be "tsconfig": "src/tsconfig.json"
"option": "watch",
"problemMatcher": [
"$tsc-watch"
]
}
${relativeFileDirname} 变量用于任务和调试配置
一个新变量 ${relativeFileDirname} 解析为当前打开文件目录相对于工作区文件夹的路径。该变量可以在任务和调试配置中使用(tasks.json 和 launch.json)。
resolveTask 支持
任务提供者现在可以实现resolveTask以减少提供任务的扩展的开销。resolveTask在provideTasks之后被调用,因此如果您的扩展有一个设置可以关闭provideTasks和自动检测(如内置的gulp扩展),但用户仍然在tasks.json中引用了您的任务之一,那么resolveTask将被调用,您的扩展可以返回该单个任务。
对扩展的贡献
远程开发(预览)
工作仍在继续在远程开发扩展上,这些扩展允许您使用容器、远程机器或Windows Subsystem for Linux (WSL) 作为全功能的开发环境。您可以在远程开发发布说明中了解新的扩展功能和错误修复。
您还可以阅读最近的两篇博客文章,描述:
Java 支持智能选择
Microsoft Java 扩展 现在支持 智能语义选择。您可以根据源代码中光标位置的语义信息扩展或缩小选择范围。
- 要扩展选择,请使用 ⌃⇧⌘→ (Windows, Linux Shift+Alt+Right)。
- 要缩小选择范围,请使用 ⌃⇧⌘← (Windows, Linux Shift+Alt+Left)。
扩展开发
vscode.workspace.fs
有一个新的API供扩展程序读取、写入和管理文件和文件夹。这是Node.js的fs文件系统模块的替代方案,更重要的是,它允许访问来自贡献的文件系统的文件,例如SSH或WSL远程文件系统。
下面的代码片段展示了如何写入文件,更多使用示例可以在fsconsumer-sample中找到。
const writeStr = '1€ is 1.12$ is 0.9£';
const writeBytes = Buffer.from(writeStr, 'utf8');
await vscode.workspace.fs.writeFile(someUri, writeBytes);
行动号召:如果您的扩展程序当前正在使用Node.js的fs模块,请考虑迁移到新的vscode.workspace.fs API。
诊断标签.已弃用
诊断标签使扩展作者能够丰富编辑器中诊断的表示。此版本添加了DiagnosticTag.Deprecated,编辑器将使用删除线渲染。

上图所示的诊断信息是由下面展示的validate函数创建的。代码行diag.tags = [vscode.DiagnosticTag.Deprecated];添加了弃用标签。
let diagnostics = vscode.languages.createDiagnosticCollection('Sample Errors');
let validate = (editor: vscode.TextEditor | undefined) => {
if (!editor) {
return;
}
let result: vscode.Diagnostic[] = [];
for (let line = 0; line < editor.document.lineCount; line++) {
let pos = 0;
while ((pos = editor.document.lineAt(line).text.indexOf('guys', pos)) >= 0) {
let diag = new vscode.Diagnostic(
new vscode.Range(line, pos, line, pos + 'guys'.length),
'This is deprecated, use "folks", "people", or "you all" instead.'
);
diag.severity = vscode.DiagnosticSeverity.Warning;
diag.tags = [vscode.DiagnosticTag.Deprecated];
result.push(diag);
pos += 'guys'.length;
}
}
diagnostics.set(editor.document.uri, result);
};
vscode.workspace.workspaceFile
有一个新的工作区属性 workspace.workspaceFile 返回工作区文件的位置。例如:file:///Users/name/Development/myProject.code-workspace 或 untitled:1555503116870 用于未命名且尚未保存的工作区。
根据打开的工作空间,值将是:
undefined当没有工作区或只打开了一个文件夹时。- 工作区文件的路径为
Uri。
如果工作区未命名,返回的URI将使用untitled:方案。
工作区文件位置的一个用途是调用 vscode.openFolder 命令,以便在关闭后再次打开工作区:
vscode.commands.executeCommand('vscode.openFolder', uriOfWorkspace);
注意:不建议使用workspace.workspaceFile位置直接将配置数据写入文件。相反,使用workspace.getConfiguration().update()方法,该方法在打开单个文件夹以及未命名或已保存的工作区时都有效。
vscode.env.shell
提议的vscode.env.shell API现已稳定。应使用此API来获取终端的默认shell,而不是使用terminal.integrated.shell.设置。
const shell = vscode.env.shell;
if (shell.search(/(powershell|pwsh)/i) !== -1) {
// Do something special that PowerShell needs
}
在when子句中支持OR
现在可以在需要when子句的各种贡献点中使用逻辑OR(||)。
例如,当添加菜单贡献时:
"contributes": {
"menus": {
"editor/title": [{
"command": "showPreviewToSide",
"when": "editorLangId == markdown || editorLangId == html",
"group": "navigation"
}]
}
}
AND && 运算符的优先级高于 OR ||。
活动输入选项的新主题颜色
一种新的颜色,inputOption.activeBackground,允许您控制输入字段中激活选项的背景颜色。此颜色重用focusBorder,以便默认情况下更好地与主题配合。我们还将inputOption.activeBorder的默认值设置为透明,以便边框仅用于焦点。
在运行扩展集成测试之前安装扩展
使用 vscode-test@1.1.0,扩展作者可以解析下载的 VS Code 副本的 CLI 路径,并使用该路径进行扩展管理。
例如:
const cp = require('child_process');
const { downloadAndUnzipVSCode, resolveCliPathFromExecutablePath } = require('vscode-test');
(async () => {
const vscodeExecutablePath = await downloadAndUnzipVSCode('1.36.0');
const cliPath = resolveCliPathFromExecutablePath(vscodeExecutablePath);
cp.spawnSync(cliPath, ['--install-extension', '<EXTENSION-ID-OR-PATH-TO-VSIX>'], {
encoding: 'utf-8',
stdio: 'inherit'
});
})();
在更新的测试扩展文档中阅读更多内容。
更新了用于在Linux上运行扩展集成测试的Travis CI脚本
扩展集成测试的推荐配置(见下文)可能无法在最新的Travis CI Linux环境中工作:
if [ $TRAVIS_OS_NAME == "linux" ]; then
export CXX="g++-4.9" CC="gcc-4.9" DISPLAY=:99.0;
sh -e /etc/init.d/xvfb start;
sleep 3;
fi
你现在可以使用下面的Xvfb脚本代替:
if [ $TRAVIS_OS_NAME == "linux" ]; then
export DISPLAY=':99.0'
/usr/bin/Xvfb :99 -screen 0 1024x768x24 > /dev/null 2>&1 &
fi
在更新的持续集成文档中阅读更多内容。
提议的扩展API
每个里程碑都伴随着新的提议API,扩展作者可以尝试使用它们。我们一如既往地重视您的反馈。以下是您尝试提议API需要做的事情:
- 你必须使用Insiders,因为提议的API经常变化。
- 您必须在扩展的
package.json文件中包含这一行:"enableProposedApi": true。 - 将最新版本的vscode.proposed.d.ts文件复制到您的项目中。
请注意,您不能发布使用提议API的扩展。我们可能会在下一个版本中进行重大更改,并且我们从不希望破坏现有的扩展。
扩展终端
去年提出的TerminalRenderer API经历了重大变化,现在已被弃用,转而支持“扩展终端”。新API更符合终端的实际工作方式,扩展现在实现了一个Pseudoterminal对象,类似于*nix风格的pty。
这是当前的提案:
export namespace window {
export function createTerminal(options: ExtensionTerminalOptions): Terminal;
}
export interface ExtensionTerminalOptions {
name: string;
pty: Pseudoterminal;
}
interface Pseudoterminal {
onDidWrite: Event<string>;
onDidOverrideDimensions?: Event<TerminalDimensions | undefined>;
onDidClose?: Event<void>;
open(initialDimensions: TerminalDimensions | undefined): void;
close(): void;
handleInput?(data: string): void;
setDimensions?(dimensions: TerminalDimensions): void;
}
以下是一些重大变化:
- 扩展终端的实现现在与常规终端非常相似,只是使用了不同的选项对象。这也消除了通过
TerminalRenderer.terminal访问Terminal对象的混淆。 - 操作系统进程的概念已经消失,不再需要返回退出代码。
Pseudoterminal可以简单地关闭终端,所有错误显示/通知都由扩展驱动。 Pseudoterminal.open如果初始尺寸可用(终端面板之前已经显示过),则使用初始尺寸调用。
这里是一个简单的例子,展示了如何创建一个简单的终端,它会回显你的输入:
const writeEmitter = new vscode.EventEmitter<string>();
let line = '';
const pty = {
onDidWrite: writeEmitter.event,
open: () => writeEmitter.fire('Type and press enter to echo the text\r\n\r\n'),
close: () => {},
handleInput: (data: string) => {
if (data === '\r') {
writeEmitter.fire(`\r\necho: "${line}"\r\n\n`);
line = '';
} else {
line += data;
writeEmitter.fire(data);
}
}
};
const terminal = vscode.window.createTerminal({ name: `My Extension REPL`, pty });
terminal.show();
我们希望尽快稳定这一点,并在v1.38和v1.39之间移除已弃用的终端渲染器。
vscode.CustomExecution2
此API是vscode.CustomExecution的演进版本。它使用了新的和改进的vscode.Pseudoterminal,允许任务提供者创建任务,使扩展中的代码能够完全控制终端,而不仅仅是执行脚本或进程。
export class CustomExecution2 {
/**
* @param process The [Pseudoterminal](#_Pseudoterminal) to be used by the task to display output.
* @param callback The callback that will be called when the task is started by a user.
*/
constructor(callback: (thisArg?: any) => Thenable<Pseudoterminal>);
/**
* The callback used to execute the task. Cancellation should be handled using
* [Pseudoterminal.close](#_Pseudoterminal.close). When the task is complete fire
* [Pseudoterminal.onDidClose](#_Pseudoterminal.onDidClose).
*/
callback: (thisArg?: any) => Thenable<Pseudoterminal>;
}
vscode.commands.onDidExecuteCommand
每当一个命令被执行时,都会触发一个新的事件,并且事件的有效负载会标识出命令和参数。
export interface CommandExecutionEvent {
command: string;
arguments: any[];
}
export namespace commands {
/**
* An event that is emitted when a [command](#_Command) is executed.
*/
export const onDidExecuteCommand: Event<CommandExecutionEvent>;
}
Webview.toWebviewResource 和 Webview.cspSource
之前提出的Webview.resourceRoot API已被重新设计。
现在在webviews上有两个提议的属性:
-
Webview.toWebviewResource- 将本地文件系统的URI转换为可以在webviews中使用的URI。对于桌面版的VS Code,这将把
file:URI转换为vscode-resource:URI。 -
Webview.cspSource- Webview资源的内容安全策略源。对于桌面版的VS Code,这将是字符串
vscode-resource:。
const panel = vscode.window.createWebviewPanel(
CatCodingPanel.viewType,
'Cat Coding',
vscode.ViewColumn.One,
{
// Restrict the webview to only loading local content from our extension's `media` directory.
localResourceRoots: [vscode.Uri.file(path.join(extensionPath, 'media'))]
}
);
const imagePath = vscode.Uri.file(path.join(extensionPath, 'media'));
panel.html = `<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="Content-Security-Policy" content="default-src 'none'; img-src ${
panel.webview.cspSource
} https:;">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Cat Coding</title>
</head>
<body>
<img src="${panel.webview.toWebviewResource(imagePath)}/cat.gif" width="300" />
</body>
</html>`;
工程
在 VS Code 代码库中移除 suppressImplicitAnyIndexErrors
当我们为VS Code的源代码启用了严格的空值检查时,我们也在TypeScript编译器中开启了"suppressImplicitAnyIndexErrors": true。此设置允许在值上使用括号访问器,即使值的类型没有特定的索引访问签名。
这是有问题的,因为它很容易隐藏TypeScript本可以捕获的错误:
const map = new Map()
map.set('property', true);
...
if (map['property']) { // This is not an TS error but it does not do what you want!
doImportantStuff();
}
在这个迭代中,我们移除了suppressImplicitAnyIndexErrors的临时解决方案,并修复了它抑制的大约250个错误。最常见的两种修复方法是添加显式的索引签名,以及改用适当的Map类型来存储映射,而不是使用对象字面量。
基于网格的工作台布局进展
在这个里程碑中,我们继续了几个里程碑前开始的关于工作台基于网格布局的工作。一旦我们的初始解决方案完成,新版本的工作台应该会以类似的方式运行,但它将更加灵活,以便添加新的布局选项和功能。
我们正在测试的一个新功能是能够将终端完全拖到顶部,完全隐藏编辑器。目前,该布局仍然在一个标志workbench.useExperimentalGridLayout后面。我们在上一个里程碑中默认在Insiders中启用了它,并且在下一个里程碑中也将继续启用。
继续探索基于iframe的webviews
我们继续探索使用普通的iframe来托管VS Code的webviews。作为其中的一部分,我们现在支持在唯一的源中加载每个基于iframe的webview。这确保了来自多个扩展的webviews不会相互影响。
你现在也可以通过设置"webview.experimental.useExternalEndpoint": true在桌面版VS Code中启用基于iframe的webviews。请注意,使用基于iframe的webviews目前需要互联网连接。虽然基于iframe的webviews仍处于实验阶段,但我们非常欢迎webview扩展作者提供关于在使用基于iframe的webviews运行时扩展中哪些部分无法正常工作的反馈。
新文档
远程开发教程
有新的入门教程将引导您使用远程开发扩展运行Visual Studio Code。
- Remote via SSH - 通过SSH使用Visual Studio Code连接到远程和虚拟机。
- 在WSL中工作 - 在Windows子系统Linux中运行Visual Studio Code。
- Dev Containers - 在 Docker 容器中运行 Visual Studio Code。
显著的修复
- 422: 在恢复最大化窗口时保留窗口大小
- 70371: 在大文件中,emmet 的 tab 补全速度较慢
- 76922: 侧边栏视图的顺序在所有窗口中保持一致
- 76989: 扩展调试时禁用扩展不起作用
- 77110: 调试集成终端支持未获取默认终端
- 77926: 输入 "string;" 有时会插入 "strings;"
感谢您
最后但同样重要的是,向以下帮助使VS Code变得更好的人们表示衷心的感谢!:
对 vscode 的贡献:
- kaoru (@0x6b): 在“检查更新...”菜单项中将“For”改为小写 PR #77972
- Akshita Agarwal (@akshita31): 修改 dotnet 构建模板 PR #76318
- Angelo (@angelozerr)
- Brett Cannon (@brettcannon)
- Shiva Prasanth (@cedric05): 在多个git仓库的工作区中,无法在按下上箭头键和回车键时查看/聚焦
source control provider view中的更改 PR #73139 - Christian Oliff (@coliff): 修复 'Untitled' 拼写错误 PR #78272
- Connor Peet (@connor4312): 修复(sash): 当包含iframe的扩展时,拖动变得困难 PR #77121
- Connor Shea (@connorshea): 添加 .rbi 文件扩展名作为 Ruby 文件类型 PR #75155
- Daniel Schildt (@d2s): 修复:拼写错误更正 PR #77618
- Dave Alongi (@dalongi): 配置 + 用户界面,用于记住允许处理URI的扩展 PR #70844
- Eric Amodio (@eamodio)
- Gabriel DeBacker (@GabeDeBacker): 使用正确的已解析TDO和任务进行自定义执行 PR #77759
- George Batalinski (@georgebatalinski): 搜索结果的状态为 search-widget(aria-live) PR #77031
- Haneef Mohammed (@haneefdm): 在调试变量视图中保留树状态 PR #76476
- Harry Hedger (@hedgerh): onDidExecuteCommand API PR #72345
- Hung-Wei Hung (@hwhung0111)
- @ironyman: 在HC中添加标签和面包屑之间的边框 PR #76157
- Julien Brianceau (@jbrianceau)
- Jean Pierre (@jeanp413)
- Joel Day (@joelday): 添加对 TaskProvider.resolveTask 的支持 PR #71027
- Malige Julien (@JulienMalige): #42382 在搜索和替换时保留大小写 PR #60311
- Justin Grant (@justingrant): 修复 JSDoc 拼写错误: "beginPattern" -> "beginsPattern" PR #73141
- Kamran Ayub (@kamranayub)
- Kostya Bushuev (@kostyabushuev): 修复了 #71134 PR #71500
- Maik Riechert (@letmaik): 修复cpuUsage.sh中变量的递增问题 PR #77512
- Leonardo Carreiro (@lmcarreiro): 修复 #48403 在markdown图片中损坏的UNC路径 PR #74332
- Mason Liu (@masliu): 保存 resourceColumn 以供预览,修复 #74008 PR #76647
- Mathieu Plourde (@matpl): 为 isInDOM 函数添加影子根支持 PR #72313
- @mflan48: 针对问题 #71683 的拉取请求 PR #72381
- @Neonit: 在Markdown预览中将代码标签大小调整为4 PR #77745
- Ryo Nishimura (@niharu): 修复拼写错误 transitionDisposables PR #76723
- Orta (@orta): 更新了来自 seti-ui 的最新图标主题 PR #76890
- Dima Ovcharenko (@ovcharenko-di): 将id更改为displayName,修复了#77141 PR #77147
- @pi1024e
- Robert Ancell (@robert-ancell): snapcaft.yaml: 在 Snap 元数据中设置 AppStream ID PR #76432
- @sharkykh: 在重命名时将当前的git分支名称作为值 PR #72957
- Prabhanjan S Koushik (@skprabhanjan)
- 修复-72650 在启动前应验证Shell路径以防止模糊错误 - $Path检查 PR #76349
- 修复-75259 - 与搜索结果中的文件交互 PR #78337
- 修复-76141 在图像预览中添加边框 PR #76387
- 修复-76662 将*.hpp.in添加到vscode开箱即用的文件关联中 PR #76680
- 修复-74281 标准主题强制SourceControlResourceGroup标题为大写 PR #76286
- 修复-73341 从扩展页面“安装”按钮安装扩展时,右下角的通知气球保持显示 PR #74795
- 修复-75259 - 与搜索结果中的文件交互 PR #76828
- 修复-76315 将*.podspec添加到文件关联中 PR #76447
- @tomkv: 将sk添加到需要区域的本地化文件中 PR #77942
- Tony Xia (@tony-xia)
- Alexander (@usernamehw): 恢复“添加CLI标志以禁用webview中的平滑滚动” PR #76944
- Vanessa Phipps (@vlmphipps): 替换:在替换所有内容时保留大小写 PR #78003
- Wesley Wigham (@weswigham): 在构建文件夹中使用更新版本的@types/node以匹配所有其他文件夹 PR #77784
- Xhulio Hasani (@xuhas): 标签标题中的git HEAD信息 PR #76329
- Zero (@ZhangDezhi): 避免使用 extensionTestsLocationURI.fsPath,因为它会规范化路径(针对 #69… PR #74214
对我们问题跟踪的贡献:
- John Murray (@gjsjohnmurray)
- Alexander (@usernamehw)
- Eric Amodio (@eamodio)
- Jean Pierre (@jeanp413)
- Danny Tuppeny (@DanTup)
请查看我们的社区问题跟踪页面,如果您想帮助我们管理收到的议题。
对language-server-protocol的贡献:
对debug-adapter-protocol的贡献:
- Pierson Lee (@pieandcakes): 更新 C/C++ 数据 PR #64
- Jonah Graham (@jonahgraham): 更新版本以匹配变更日志的最新条目 PR #67
对 vscode-generator-code 的贡献:
- Tomáš Hübelbauer (@TomasHubelbauer): 使这个生成器与 require.resolve 一起工作 PR #179
- Yoichi Kawasaki (@yokawasa): 更新ext-command-ts模板的快速入门页面 PR #178
对 vscode-vsce 的贡献:
- Eric Amodio (@eamodio): 在预发布步骤中支持 --yarn 标志 PR #376
- Leo Hanisch (@HaaLeo): 支持 GitHub 问题链接 PR #345
- James George (@jamesgeorge007): 小规模重构使代码更简洁 PR #370
对inno-updater的贡献:
- Ta Thanh Dinh (@tathanhdinh): 使用 is_null 方法检查指针是否为空 PR #10
对localization的贡献:
有超过800名Cloud + AI Localization社区成员使用微软本地化社区平台(MLCP),其中约有100名活跃贡献者参与Visual Studio Code的本地化工作。我们感谢您的贡献,无论是提供新的翻译、对翻译进行投票,还是建议流程改进。
这是贡献者的快照。有关项目的详细信息,包括贡献者名单,请访问项目网站https://aka.ms/vscodeloc。
- 波斯尼亚语: Ismar Bašanović, Ernad Husremovic.
- 保加利亚语: Hristiqn Hristov, Иван Иванов, Любомир Василев, Gheorghi Penkov.
- 捷克语: Tadeáš Cvrček, Daniel Padrta, David Jareš, Jan Hajek, Jakub Stibůrek, Michal Franc, Jan Kos, Radim Hampl, Jiří Hofman, Samuel Tulach, Jan Brudný.
- 丹麦语: René Pape, Lasse Stilvang, Allan Kimmer Jensen, Lars Vange Jørgensen, Alexander Matzen, Martin Liversage, Johan Fagerberg, Thomas Larsen, Anders Lund, Anton Ariens.
- 荷兰语: Leroy Witteveen, Maxim Janssens, Luc Sieben, Hans Zoons, Jos Verlinde, Eric Algera, Damien van Gageldonk, Maxim Van Damme, Sven Klaasen, Tom Meulemans, Sujith Quintelier.
- 英语(英国): Martin Littlecott, Alexander Ogilvie, Tobias Collier, William Wood, Fabio Zuin, Mohit Nain, Dan Jacobs, Sulkhan Ninidze, Giorgi Jambazishvili, alshyab wa3ed, YASHU MITTAL, Tejas kale, Mohammad Idrees, Chris Dias.
- 芬兰语: Petri Niinimäki, Kiti Suupohja, Lasse Leppänen, Sebastian de Mel, Riku Riikonen, Valtteri Vatanen.
- 法语: Antoine Griffard, Thierry DEMAN-BARCELÒ, Corwin D'Ambre, Mohamed Sahbi, Rodolphe NOEL, Maxime Coquerel, Steven Dugois, Cédric M., Michael VAUDIN, Bastien Boussouf, franto.
- 德语: Julian Pritzi, Jakob von der Haar, Frank Lindecke, Dejan Dinic, Florian Erbs, Patrick Burke, Mario Koschischek, Florian Berger, Christof Opresnik, Hans Meiser, Carsten Kneip, Ettore Atalan, Thorsten Hans, Meghana Garise, Sebastian Seidl.
- 希腊语: Δημήτρης Παπαϊωάννου, Sotiris Koukios-Panopoulos, Jim Spentzos, Θοδωρής Τσιρπάνης, Stratos Kourtzanidis, Charalampos Fanoulis, John D, Vassilis Vouvonikos.
- 希伯来语: חיים לבוב, Shalom Craimer, Matan Amos, Eyal Ellenbogen, Snir Broshi, Kyle Orin.
- 印地语: Satish Yadav, Amit Gusain, Sanyam Jain, Abhirav Kushwaha, Ashok Kumar Rathore, nirav adatiya, Rajeev Desai, shaswat rungta, Kumar Vaibhav, Pramit Das, Jagjeet Singh, Pratishek PII, Kiren Paul, Chethana S, Kishan K, Dhanvi Kapila.
- 匈牙利语: Levente Borbély, Péter Nagy, Levente Hallai Seiler, Dániel Tar, Richard Borcsik, Boldi Kemény.
- Chinese Simplified: Tingting Yi, 斌 项, paul cheung, Yiting Zhu, 建东 薛, feiyun0112 feiyun0112, Joel Yang, 刘瑞恒 刘瑞恒, Edi Wang, Junzhe Liu, Dave Young, 张锐, Yizhi Gu, Fan Su, 昊宇 周, Justin Liu, Pluwen, Tony Xia, Yu Zhang, XIANG ZUO, 少民 谈, 彦佐 刘, Zhiqiang Li, 福永 叶, G.Y. Z, Hao Hu, 志乐 龚, meng shao, Horie Yuan, Xiangrui Kong, Liam Kennedy, 王文杰, 赵畅畅, 松阳 樊, anson zhang, Young Bige, Shi Liu, Wang Debang, Jessica Zhang, Licheng Ren, 驰 雷, sun qing, xiong Fu, Lynne Dong, zhao yu, 吉姆 舒, 红东 黄, 游 尤, 剑秋 陶, Hanlin Yang, , bh wu, Bravo Yeung, Michael Zhang, Hanyu ZHANG, Y F, WangCG duoduobear, ziqiang sun, 越 郑, 正元 刘, Jiang LI, 擎 钟, peng wei, 涛 徐, 逍遥 许, Charles Lee, 瑜 周, WL, 伟 全, rsy iridescent, Simon Chan, 海龙 黄, 仁松 陈, Jieting Xu, panda small, 翼 张, Chen Yang, Wang Weixuan, 舜杰 杨, Ludi Fang, 雨齐 刘, 建 周, 涛 罗, cuibty wong, 立飞 李, LI ZHAO, 九鼎 谭.
- Chinese Traditional: 謝政廷, Winnie Lin, LikKee 沥祺 Richie, Martin Lau, Jeremy, 奕濬 潘, 小克, 煾 雪.
- 印度尼西亚语: Jakka Prihatna, Septian Adi, Arif Fahmi, Laurensius Dede Suhardiman, maziyank, Heston Sinuraya, Hendra Widjaja, Don Nisnoni, Rachmat Wahidi, Franky So, Bervianto Leo Pratama, Eriawan Kusumawardhono, Rifani Arsyad, Afnizar Nur Ghifari, Christian Elbrianno, Pradipta Hendri, Azhe Kun.
- 意大利语: Alessandro Alpi, Bruni Luca, Luigi Bruno, Andrea Dottor, Riccardo Cappello, Aldo Donetti, andrea falco, Emanuele Meazzo, Michael Longo, Marco Dal Pino.
- Japanese: EbXpJ6bp -, nh, Kyohei Uchida, Yoshihisa Ozaki, Hasefumi, TENMYO Masakazu, Takayuki Fuwa, Michihito Kumamoto, Koichi Makino, Seiji Momoto, Aya Tokura, Yosuke Sano, Makoto Sakaguchi, Kyohei Moriyama, 裕子 知念, Rie Moriguchi, Fujio Kojima, 美穂 山本, taniokae, 太郎 西岡, Hiroomi Kurosawa, Kazuya Ujihara, Yasuaki Matsuda.
- 韩语: Hongju, 우현 조, Jong Heun Shin, 형섭 이, Kyunghee Ko, Youngjae Kim, siin lee, Jae Yong Kum, Hoyeon Han, Kevin Lee, SeungJin Jeong, Hong Kwon.
- 拉脱维亚语: Kaspars Bergs, Andris Vilde.
- 立陶宛语: Andrius Svylas, Augustas Grikšas, Tautvydas Derzinskas, Karolis Kundrotas, Martynas J..
- 挪威语: Andreas Rødland, Cookius Monsterius, Dag H. Baardsen, Ole Kristian Losvik, Stephan Eriksen.
- 波兰语: Warchlak, Wojciech Maj, Marcin Weksznejder, Rafał Całka, Tomasz Świstak, Tomasz Wiśniewski, Marek Biedrzycki, Szymon Seliga, Michal Szulc, Jakub Żmidziński, Bartek PL, Igor 05, Rafał Wolak, Tomasz Chojnacki, Piotr Grędowski, Czech Kaczmarek, Artur Pelczar, Marcin Floryan, Paweł Modrzejewski, Jakub Jedryszek, Michał Stojke, Artur Zdanowski.
- 葡萄牙语(巴西): Alessandro Trovato, Thiago Dupin Ugeda, Weslei A. de T. Marinho, Rafael Lima Teixeira, Gerardo Magela Machado da Silva, Marcos Albuquerque, Loiane Groner, Alessandro Fragnani, Judson Santiago, Andrei Bosco, Fábio Corrêa, Roberto Fonseca, Fabio Lux, Emmanuel Gomes Brandão, Guilherme Pais, Rodrigo Vieira, André Gama.
- 葡萄牙语(葡萄牙): Ana Rebelo, Nuno Carapito, Pedro Daniel, Pedro Teixeira, João Carvalho, Diogo Barros, José Rodrigues, Sandro Pereira, Vitor Barbosa, Tiago Antunes.
- 罗马尼亚语: Mihai Marinescu, Stefan Gabos, Alexandru Staicu.
- 俄语: Andrey Veselov, Дмитрий Кирьянов, michael v, Иван Лещенко, nata kazakova, Анатолий Калужин, Валерий Батурин, Эдуард Тихонов.
- 塞尔维亚语: Milos Zivkovic, Radovan Skendzic.
- 西班牙语: Andy Gonzalez, Alvaro Enrique Ruano, Engel Aguilar, Carlos Mendible, José María Aguilar, David Fernández Aldana, Ricardo Rubio, Thierry DEMAN, julian3xl, Ing. Sergio Uziel Tovar Lemus, Mario Mendieta, Jorge Serrano Pérez, Ricardo Estrada Rdez.
- 瑞典语: Johan Spånberg, Notetur Nomen.
- 泰米尔语: Merbin J Anselm, Kondasamy Jayaraman, Mani M, Boopesh Kumar, Vignesh Rajendran, Jeyanthinath Muthuram, Jaganathan B, Nithun Harikrishnan, Purusothaman Ramanujam, Krishna Pravin, Jeffin R P, Karunakaran Samayan, Vetri ..
- 土耳其语: Meryem Aytek, BlueAngel-MG, Fıratcan Sucu, Ahmetcan Aksu, Ömer Sert, Mehmet Yönügül, Anıl MISIRLIOĞLU, Sinan Açar, Misir Jafarov, Umut Can Alparslan, Yakup Ad, Hüseyin Fahri Uzun, S. Ferit Arslan, Mesut Pişkin, Okan Çetin, Bruh Moment, Muhammed Emin TİFTİKÇİ, Burak Göksel.
- 乌克兰语: Dmytro Kutianskyi, Arthur Murauskas, Sviatoslav Ivaskiv, Yaroslav Y, George Molchanyuk, Did Kokos, Alexander Varchenko, Вадим Шашков, Евгений Коростылёв.
- 越南语: Khôi Phạm, Van-Tien Hoang, Belikhun, Việt Anh Nguyễn, Spepirus Shouru, Vuong Bui, Chủ Tất.