2019 年 7 月(版本 1.37)
更新 1.37.1:此更新解决了这些 问题。
下载:Windows:x64 | Mac:Intel | Linux:deb rpm tarball snap
欢迎使用 2019 年 7 月版的 Visual Studio Code。此版本包含许多更新,我们希望您会喜欢它们,一些主要亮点包括
- 完整的产品图标更新 - 整个 VS Code 都采用新的现代图标。
- 在设置 UI 中编辑字符串数组 - 直接从设置编辑器中添加字符串数组。
- 在文件资源管理器中显示搜索结果 - 快速跳转到文件资源管理器中的文件位置。
- 在选择中显示空白 - 只查看选定文本中的空白字符。
- 查找和替换保留大小写 - 替换文本时不会丢失字母大小写。
- 终端搜索 UX 改进 - 终端采用更直观的自下而上的搜索顺序。
- 更好的 SCSS @import 导航 - VS Code 现在检查更多 SCSS 文件的位置。
- 远程开发教程 - 通过 SSH 和 WSL 工作的新教程。
如果您想在线阅读这些发行说明,请访问 Updates 在 code.visualstudio.com 上。
您还可以查看此 1.37 版的 亮点视频,由开发者倡导者 Brian Clark 提供。
内部人士:想要尽快看到新功能?您可以下载 nightly Insiders 版本,并在新功能可用时立即试用。
工作区
新产品图标
我们更新了所有产品图标,使其在样式、颜色和大小方面保持一致。我们经历了 多次迭代,社区在整个过程中提供了宝贵的反馈。
注意:这并不包括我们对 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 资源管理器中的相同 UX 改进。
编辑器
在选择中显示空白
editor.renderWhitespace
设置现在支持 selection
选项。使用此选项设置后,空白字符将仅显示在选定文本中。
这对快速检查空白字符非常有用,无需填充整个编辑器。
改进的小地图搜索结果可见性
在之前的版本中,我们在小地图(代码大纲)中引入了搜索装饰。这些装饰很难看到,因此在此迭代中,我们努力提高了它们的可见性。现在,整条线将在小地图中以低不透明度突出显示,并且实际匹配将以高不透明度显示。
您还可以使用新的 minimap.findMatchHighlight
主题颜色更改装饰的颜色。
在查找和替换中保留大小写
现在,您可以在编辑器的查找小部件中进行替换时保留大小写。当编辑器的替换输入框中打开保留大小写选项(AB 按钮)时,该功能将启用。
目前,VS Code 只支持保留全大写、全小写和标题大小写。
在查找小部件中按钮切换活动状态
我们更新了查找小部件的按钮切换活动状态,使用填充的背景,以便您现在可以轻松地分辨出何时处于活动切换的焦点。这出现在搜索视图、查找和替换以及终端查找中。
在此更新中,我们引入了新的主题颜色 inputOption.activeBackground
,用于控制切换活动状态的背景颜色。此颜色重用 focusBorder
,使其默认情况下与主题更好地配合使用。我们还将 inputOption.activeBorder
的默认值设置为透明,以便边框仅用于焦点。
更新的信息颜色
在 统一警告颜色 后,我们还更新了 editorInfoForeground
和 editorInfoBorder
,使其与其他信息诊断颜色匹配。您将在“Peek 错误”视图和编辑器波浪线中看到此更新的颜色。
集成终端
搜索 UX 改进
以前,在终端内搜索会从终端视窗的顶部开始向下搜索。当它到达底部时,它会环绕到顶部。新行为与其他一些终端模拟器一致,它从缓冲区的底部开始向上搜索,从而带来更不令人困惑的体验。
终端无障碍改进
当使用屏幕阅读器时,终端现在提供行导航模式,这使得可以通过 和 方便地导航行。可以使用 退出该模式。
如果您想自定义键绑定,这些是新的命令。
workbench.action.terminal.navigationModeExit
workbench.action.terminal.navigationModeFocusNext
workbench.action.terminal.navigationModeFocusPrevious
还做了一些其他辅助功能改进。
- 现在使用不间断空格字符来表示空白行,而不是显式字符串,从而使屏幕阅读器能够正确地宣布。
- 屏幕阅读器现在会在键入和删除字符时进行宣布。在某些情况下,这将不起作用,但大多数情况都涵盖了。
在设置中解析的变量
现在可以在以下设置中使用变量
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.scss
foo/index.scss
foo/_index.scss
foo.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
路径中使用特定于操作系统的路径分隔符更改为更跨平台友好的 /
。如果 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
将被调用,并且您的扩展程序可以返回该单个任务。
对扩展的贡献
远程开发(预览版)
一直在继续进行远程开发 扩展程序的工作,这些扩展程序允许您使用容器、远程计算机或适用于 Linux 的 Windows 子系统 (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。
DiagnosticsTag.Deprecated
诊断标记使扩展程序作者能够丰富编辑器内诊断的表示形式。此版本添加了 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 现在已稳定。应使用它来获取终端的默认 shell,而不是 terminal.integrated.shell.<platform>
设置。
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
的默认值设置为透明,以便边框仅用于焦点。
在运行扩展程序集成测试之前安装扩展程序
使用 [email protected]
,扩展程序作者可以解析已下载的 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
对象的混乱方式。 - OS 进程的概念以及必须返回退出代码的概念已经消失。
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();
我们希望尽快稳定此 API 并删除已弃用的终端呈现器,可能在 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 已经过重新设计。
Webview 上现在有两个建议的属性
-
Webview.toWebviewResource
- 将本地文件系统的 URI 转换为可在 Webview 中使用的 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 的 Webview
我们继续探索使用普通 iframe 托管 VS Code 的 Webview。作为此的一部分,我们现在支持在唯一来源中加载每个基于 iframe 的 Webview。这确保了来自多个扩展的 Webview 不会相互影响。
您现在还可以通过设置以下内容在桌面 VS Code 中启用基于 iframe 的 Webview:"webview.experimental.useExternalEndpoint": true
。请注意,使用基于 iframe 的 Webview 目前需要互联网连接。虽然基于 iframe 的 Webview 仍处于实验阶段,但我们很乐意收到 Webview 扩展作者关于您的扩展在使用基于 iframe 的 Webview 运行时不起作用的部分的反馈。
新文档
远程开发教程
有一些新的入门教程可帮助您逐步了解如何使用远程开发扩展运行 Visual Studio Code。
- 通过 SSH 远程访问 - 通过 SSH 使用 Visual Studio Code 连接到远程和虚拟机。
- 在 WSL 中工作 - 在 Windows 子系统 Linux 中运行 Visual Studio Code。
- Dev Containers - 在 Docker 容器中运行 Visual Studio Code。
显著修复
- 422:还原最大化窗口时保留窗口大小
- 70371:在大型文件中,Emmet 选项卡补全速度很慢
- 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 存储库工作区中,无法在
源代码管理提供程序视图
中使用向上箭头和回车键来查看/聚焦更改 PR #73139 - Christian Oliff (@coliff):修复“Untitled”拼写错误 PR #78272
- Connor Peet (@connor4312):fix(sash):使用包含 iframe 的扩展时,拖动变得困难 PR #77121
- Connor Shea (@connorshea):将“.rbi”文件扩展名添加为 Ruby 文件类型 PR #75155
- Daniel Schildt (@d2s):fix:拼写错误更正 PR #77618
- Dave Alongi (@dalongi):配置 + UI 可记住允许处理 URI 的扩展 PR #70844
- Eric Amodio (@eamodio)
- Gabriel DeBacker (@GabeDeBacker):为自定义执行使用正确的已解析 TDO 和任务 PR #77759
- George Batalinski (@georgebatalinski):搜索小部件 (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)
- Fix-72650 应在启动之前验证 Shell 路径以防止出现模棱两可的错误 - $Path 检查 PR #76349
- Fix-75259 - 与搜索结果中的文件交互 PR #78337
- Fix-76141 在图片预览中添加图片周围的边框 PR #76387
- Fix-76662 将 *.hpp.in 添加到 vscode 开箱即用的 file.associations 中 PR #76680
- Fix-74281 标准主题强制 SourceControlResourceGroup 标题为大写 PR #76286
- Fix-73341 从扩展页面“安装”按钮安装扩展会将通知气球保留在右下角 PR #74795
- Fix-75259 - 在搜索结果中与文件交互 PR #76828
- Fix-76315 将 *.podspec 添加到文件关联 PR #76447
- @tomkv: 在需要区域的语言环境中添加 sk PR #77942
- Tony Xia (@tony-xia)
- Alexander (@usernamehw): 恢复“添加 CLI 标志以禁用 webview 中的平滑滚动” PR #76944
- Vanessa Phipps (@vlmphipps): 替换:替换所有时尊重 preserveCase 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 名 云 + AI 本地化 社区成员使用 Microsoft 本地化社区平台 (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.
- 简体中文: 逸婷 易, 斌 项, paul cheung, 逸婷 朱, 建东 薛, feiyun0112 feiyun0112, Joel Yang, 刘瑞恒 刘瑞恒, Edi Wang, 俊哲 刘, Dave Young, 张锐, 易之 顾, 凡 苏, 昊宇 周, Justin Liu, Pluwen, Tony Xia, 瑜 张, 湘 佐, 少民 谈, 彦佐 刘, 志强 李, 福永 叶, G.Y. Z, 昊 胡, 志乐 龚, 孟 邵, Horie Yuan, 向睿 孔, Liam Kennedy, 王文杰, 赵畅畅, 松阳 樊, anson zhang, Young Bige, 石 刘, 王德邦, Jessica Zhang, 立诚 任, 驰 雷, 孙 晴, 熊 傅, Lynne Dong, 赵 瑜, 吉姆 舒, 红东 黄, 游 尤, 剑秋 陶, 寒林 杨, , bh wu, Bravo Yeung, Michael Zhang, Hanyu ZHANG, Y F, WangCG duoduobear, ziqiang sun, 越 郑, 正元 刘, 江 李, 擎 钟, 鹏 魏, 涛 徐, 逍遥 许, Charles Lee, 瑜 周, WL, 伟 全, rsy iridescent, Simon Chan, 海龙 黄, 仁松 陈, 季亭 许, panda small, 翼 张, 陈 杨, 王维轩, 舜杰 杨, 路迪 方, 雨齐 刘, 建 周, 涛 罗, cuibty wong, 立飞 李, LI ZHAO, 九鼎 谭.
- 繁體中文: 謝政廷, 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.
- 日语: 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.