2018年10月(版本1.29)
更新 1.29.1: 此次更新解决了这些问题。
下载:Windows: x64 | Mac: Intel | Linux 64位: deb rpm tarball | 32位: deb rpm tarball
欢迎来到2018年10月发布的Visual Studio Code。此版本中有许多重要的更新,我们希望您会喜欢,一些关键的亮点包括:
- Multiline search - 使用正则表达式多行表达式跨文件搜索。
- IntelliSense中的文件图标 - 在IntelliSense中快速区分文件类型。
- 更好的macOS支持 - 全屏模式控制和Mojave暗黑模式支持。
- Collapsible stack frames - 折叠不感兴趣的堆栈帧,以便清晰地查看您的代码。
- 改进的加载脚本视图 - 显示相关资源,如原始源文件。
- 更新的扩展示例 - 统一的风格和结构,README,以及API使用。
- 扩展的CI配方 - 用于扩展的Azure Pipelines构建配方。
- 预览:查找所有引用 - 查找所有引用视图显示引用搜索结果。
如果您想在线阅读这些发布说明,请访问更新在code.visualstudio.com上。
您还可以查看这个1.29版本的亮点视频,由云开发者倡导者Brian Clark提供。
发布说明按与VS Code重点领域相关的以下部分排列。以下是一些进一步的更新:
- Workbench - 平台特定的行尾字符,高亮显示修改过的文件标签。
- 集成终端 - 分割终端当前工作目录选项,Cmd+Backspace 删除到行首。
- Languages - 悬停时显示CSS特异性,处理未知的CSS属性。
- 调试 - 多个调试控制台,启动时停在入口,样式化 console.log 消息。
- 扩展开发 - 活动终端API,更多控制自定义视图。
内部人员:想要尽快看到新功能吗?您可以下载每晚的内部人员版本,并在更新可用时立即尝试最新更新。要获取最新的Visual Studio Code新闻、更新和内容,请在Twitter上关注我们@code!
搜索
多行搜索
VS Code 现在支持多行搜索!与编辑器中的情况相同,正则表达式搜索仅在包含 \n 字面量时以多行模式执行。搜索视图在每个多行匹配旁边显示提示,显示额外的匹配行数。

此功能得益于在ripgrep工具中实现的多行搜索工作。
搜索中的反向引用和前瞻
现在也可以通过设置"search.usePCRE2": true在正则表达式搜索中使用反向引用和前瞻断言。这将配置ripgrep使用PCRE2正则表达式引擎。虽然PCRE2支持许多其他功能,但我们只支持在JavaScript中仍然有效的正则表达式,因为打开的编辑器仍然使用基于JavaScript的搜索进行搜索。

如果你仍然缺少后行断言,不用担心!这个功能最近才被JavaScript支持,应该会在稍后的Electron shell更新中加入到VS Code中。
在搜索中显示行号
我们添加了一个设置 search.showLineNumbers,它将在搜索视图中显示每个匹配项的行号。
禁用搜索和替换预览
有一个新的设置 search.useReplacePreview,它允许您禁用在进行搜索/替换时出现在搜索视图中的预览差异。

在搜索中使用全局 .gitignore 文件
Git 允许你使用 core.excludesfile 配置属性来配置一个全局的 gitignore 文件。默认情况下,搜索不会考虑全局的 gitignore 文件,但你现在可以通过启用新的设置 search.useGlobalIgnoreFiles 来改变这一点。
工作台
macOS Mojave 暗黑模式支持
macOS Mojave 的深色模式现在在 VS Code 中得到了更好的支持。以前,即使 macOS 运行在深色主题下,VS Code 的菜单和对话框也会显示为默认的浅色主题。现在,如果启用了深色模式,所有原生 UI 元素都将以深色模式显示。

macOS 全屏支持
引入了一个新的设置 window.nativeFullScreen,如果将其设置为 false,将为 VS Code 启用不使用原生 macOS 全屏功能的全屏模式。这样做的优点是进入全屏模式不会在桌面上创建 macOS 空间。默认情况下,VS Code 仍将使用 macOS 原生全屏。
files.eol 的新默认值:auto
files.eol 行尾设置现在有一个新的默认值 auto。当设置为 auto 时,新文件的行尾字符取决于操作系统。在 Windows 上是 \r\n,在 macOS 和 Linux 上是 \n。您仍然可以显式地将 file.eol 设置为 \n 或 \r\n。
高亮显示修改过的标签
一个新的设置 workbench.editor.highlightModifiedTabs 在编辑器标签页的顶部显示一个粗边框,当编辑器处于“脏”状态(有未保存的更改)时。这使得更容易找到需要保存的文件。边框的颜色可以自定义(见下文)。

居中编辑器布局自动调整大小
当打开多个编辑器组时,居中布局视图现在会自动调整到最大宽度。这应该会使居中布局更易于使用,并减少手动切换的需求。此行为由一个新的设置workbench.editor.centeredLayoutAutoResize控制,该设置默认启用。
面包屑中的符号顺序
有一个新的设置控制面包屑选择器中符号的排序方式:breadcrumbs.symbolSortOrder。
允许的值为:
position- 文件中的位置(默认)name- 按字母顺序排列type- 符号类型顺序
下面的示例显示了按名称排序的面包屑符号列表:

面包屑和预览编辑器
在面包屑导航中点击项目时,它们现在会在新编辑器中打开,而不会重用预览编辑器。此行为现在与在资源管理器中点击文件的行为一致。
即使显示按钮,通知也会自动隐藏
以前,如果通知包含按钮,VS Code 永远不会隐藏它们。这导致通知可能会在右下角堆积并覆盖部分编辑器。在此版本中,即使通知显示按钮,也会在超时后隐藏。
有两个例外:
- 带有
error严重级别的通知将不会被隐藏,假设用户需要采取一些行动。 - VS Code 中的一些特定通知将保持打开状态。例如,在浏览 VS Code 市场后询问您是否要安装扩展的通知。
注意: 即使通知被隐藏,您始终可以通过点击状态栏中的小铃铛图标或使用显示通知 (notifications.toggleList) 命令从通知中心访问所有通知。
面板位置按钮到上下文菜单
为了节省水平空间并减少混乱,我们从面板标题区域移除了切换面板位置按钮(移至右侧,移至底部)。该操作现在可以在面板标题区域的上下文菜单中找到,也可以在视图 > 外观 > 切换面板位置主菜单中找到。移除此按钮的另一个原因是我们相信用户通常只设置一次布局,不会频繁来回切换。

按文件类型更新的文件图标
在上一个版本中,我们为常见的VS Code文件类型添加了自定义图标。我们现在将这些图标添加到较小的视图中,以便它们出现在列表视图中。
![]()
设置编辑器中的“修改于”提示现在是一个链接
在设置编辑器中,当设置在当前选择的范围(用户、工作区)之外的其他范围中配置时,我们会显示一个提示。现在,其他范围的提示是一个链接,点击它将带您到其他范围中的设置。

树形小部件性能
VS Code 的树形小部件控件在 VS Code 用户界面的许多地方都有使用,但在某些特定用例(问题面板、大纲视图)中遇到了性能限制。我们一直在开发更快的虚拟树形小部件实现,这些实现可以在性能与 API 便利性之间提供不同的平衡。您可以在这里了解更多信息。
新的ObjectTree小部件现在被用于问题面板中,我们已经看到了显著的改进。我们能够显著提高工作台可以处理的问题项数量,并提高某些操作(如全部折叠)和高级过滤场景的速度。这些改进现在使得处理更大的集合大小变得可行。
Workbench 导航命令
添加了四个命令以改进工作台导航:
workbench.action.nextSideBarView: 转到侧边栏中的下一个视图。workbench.action.previousSideBarView: 转到侧边栏中的上一个视图。workbench.action.nextPanelView: 转到下一个面板。workbench.action.previousPanelView: 转到上一个面板。
默认情况下,这些命令没有键盘快捷键。
还添加了两个上下文键,sideBarFocus 和 panelFocus。这允许在不同的工作台区域中使用相同的键绑定来执行不同的命令:
[
{ "key": "cmd+]", "command": "workbench.action.nextEditor" },
{ "key": "cmd+[", "command": "workbench.action.previousEditor" },
{
"key": "cmd+]",
"command": "workbench.action.nextSideBarView",
"when": "sideBarFocus"
},
{
"key": "cmd+[",
"command": "workbench.action.previousSideBarView",
"when": "sideBarFocus"
},
{
"key": "cmd+]",
"command": "workbench.action.nextPanelView",
"when": "panelFocus"
},
{
"key": "cmd+[",
"command": "workbench.action.previousPanelView",
"when": "panelFocus"
}
]

显示视图组父级
打开视图命令(在快速打开中的view)现在显示每个视图组的父级,以更好地表示视图层次结构。例如,资源管理器组现在显示为侧边栏 / 资源管理器,终端组显示为面板 / 终端。

编辑器
IntelliSense 中的文件和文件夹图标
IntelliSense 小部件现在根据您的文件图标主题显示文件和文件夹图标以完成文件。这提供了统一的外观,并帮助您快速识别不同的文件类型。
![]()
格式选择
为了加快小型格式化操作的速度,格式化选择命令在没有编辑器选择的情况下现在将格式化当前行。
显示错误代码
如果定义了错误代码,编辑器现在会显示问题的错误代码。错误代码会以方括号的形式显示在行的末尾。
下面你可以看到TypeScript正在显示错误代码'2339':

集成终端
分割终端可以继承工作目录
添加了一个设置 terminal.integrated.splitCwd 来控制当终端被分割时新终端的当前工作目录(cwd):
workspaceRoot- 之前的行为;新的分割终端将使用工作区根目录作为工作目录。在多根工作区中,会提供选择使用哪个根文件夹。initial- 一个新的分割终端将使用父终端启动时的工作目录。inherited- 在macOS和Linux上,新的分割终端将使用父终端的工作目录。在Windows上,此行为与initial相同。
Cmd+Backspace 删除到行首
在macOS上新增了一个键绑定Cmd+Backspace,它会向终端发送\u0015(Ctrl+U)。在bash中,这会删除从光标到行首的内容,而在zsh中,它会删除整行。
实验性缓冲区改进
一个新的设置 terminal.integrated.experimentalBufferImpl 允许将终端的缓冲区存储方式更改为基于 TypedArray/ArrayBuffer 的实现。如果您选择启用此设置,您可以期待全面的性能提升,包括减少内存使用和垃圾回收,以及终端吞吐量的整体提高。
{
"terminal.integrated.experimentalBufferImpl": "TypedArray"
}
这仅仅是个开始,我们预计在接下来的几个版本中,吞吐量和内存使用率会有进一步的改进,然后才会将其作为默认实现。特别感谢来自@jerch的xterm.js团队,他是这个多个月项目的主要推动力。
任务
在执行任务前清除终端
在任务presentation配置中添加了一个新属性clear。将clear属性设置为true以在任务运行前清除终端。
调试
可折叠的堆栈帧
有时调试器中的调用堆栈包含对用户不感兴趣的堆栈帧(外部代码、跳过的文件等...)。为了减少混乱并节省垂直空间,我们现在将这些不感兴趣的堆栈帧呈现为折叠状态。

改进的已加载脚本视图
在这个里程碑中,我们更新了已加载脚本视图以支持文件图标,并增加了显示相关资源作为子元素的功能。调试扩展可以使用此功能来显示被转译为脚本的源文件。
以下图片来自Node.js调试器,展示了JavaScript文件的TypeScript源代码(如源映射中可用):

请注意,相关资源功能需要调试扩展选择加入。在十月份的版本中,只有node-debug对Node.js版本< 8.0(即“旧版”)提供了此功能的实验性支持。
多个调试控制台
在调试多个调试会话时,我们现在在不同的调试控制台中显示它们的输出。这使得更容易区分哪个调试会话负责哪个输出和评估。

开始调试并在入口处停止
对于Node.js调试,我们添加了一个新命令调试:开始调试并在入口处停止(extension.node-debug.startWithStopOnEntry)。如果您想开始调试并立即在程序入口处停止,请使用此命令。默认的快捷键是F11。请注意,此命令仅在您选择的启动配置类型为node时可用。
Node 调试支持 console.log 样式
在调试Node.js(或使用“Debugger for Chrome”扩展的Chrome)时,您现在可以使用%c来样式化来自console.log的消息,类似于Chrome DevTools所支持的功能。支持的属性包括color、background、font-weight: bold和text-decoration: underline。

断点小部件扩展到多行
断点小部件现在可以扩展到多行,使用Shift+Enter插入额外的行,或者简单地粘贴多行条件或日志消息。这应该有助于编辑更复杂的条件和日志消息。

语言
TypeScript 3.1.4
此版本包括TypeScript 3.1.4,这是一个小更新,修复了一些重要的错误。
Markdown片段改进
内置的Markdown片段,例如用于链接和代码块的片段,现在默认使用当前选中的文本。这允许您创建快捷键,将当前选中的文本转换为链接或标题:
{
"key": "cmd+k",
"command": "editor.action.insertSnippet",
"when": "editorTextFocus",
"args": {
"langId": "markdown",
"name": "Insert link"
}
}
悬停消息中的CSS特异性
CSS悬停现在显示CSS Specificity。

处理未知的CSS属性
使用像PostCSS这样的CSS预处理器时,你可能会使用一些在开发时会被编译为有效属性的无效属性。[css/less/scss].lint.validProperties设置可以防止VS Code将这些无效属性标记为错误。
改进的CSS零单位警告
CSS 现在会对在 CSS 简写属性值中使用的 零单位 进行 lint 检查。例如,0px 现在会引发警告。
优雅处理JSON模式加载错误
如果 VS Code 无法下载用于 IntelliSense 或错误检查 JSON 文件的 JSON 模式,状态栏中将显示警告:

在过去,你会在编辑器中看到一个错误。
工程
继续探索 Electron 3.0
在这个里程碑期间,我们继续探索将Electron 3.0.0集成到VS Code中。这是一个重大的Electron版本,包含了Chrome 66和Node.js 10.x(与我们当前包含Chrome 61和Node.js 8.x的版本相比,这是一个巨大的飞跃)。我们计划在不久的将来向我们的Insiders用户推送更新,以收集更多反馈。如果您有兴趣帮忙,请确保安装VS Code Insiders。
严格空值检查核心 VS Code
在这个里程碑中,我们还开始工作,以在核心VS Code源代码中启用TypeScript的严格空值检查。严格空值检查有助于捕捉许多常见的编程错误,并使程序员的意图更加明确。我们已经看到在VS Code的内置扩展中使用严格空值检查的明显好处。
由于VS Code的核心源代码包含数千个文件,我们正在逐步采用严格的空值检查。我们首先对没有导入的文件进行严格的空值检查,现在正在迭代地对仅导入其他已进行严格空值检查的文件进行严格空值检查。这将持续到整个代码库被转换完成。
启用严格的空检查是一项重大的工程努力,但我们认为在源代码和产品质量方面的回报将是值得的。您可以在这里跟踪我们的严格空检查进度。
杂项
低对比度菜单栏
如果您使用的是Ubuntu 18.10或一个GTK主题,该主题将浅色或深色上下文菜单与应用程序菜单栏的相反主题混合在一起,您可能会遇到一个难以阅读的低对比度菜单栏。
有两种可能的解决方法:
- 通过将设置
window.titleBarStyle配置为custom来尝试VS Code自定义标题栏样式。 - 更改您的GTK主题。您可以通过安装Gnome Tweaks应用程序并使用之前的默认主题
Adwaita来实现。
有关此问题的信息可以在问题 62593 中跟踪。
Electron 更新
在此版本中,我们从Electron 2.0.9更新到了2.0.12。
预览功能
预览功能尚未准备好发布,但功能足够使用。我们欢迎您在开发过程中提供早期反馈。
参考文献视图
有一个新的命令Find All References,它显示一个专用的侧边栏视图,展示引用搜索结果。这补充了现有的Peek视图展示,并提供了一个更稳定的引用列表。在上下文菜单中,选择Find All References(),引用会显示在一个单独的视图中,就像搜索结果一样。

结果是稳定的,并且可以清除单个结果,如果您将视图用作待办事项列表,这将非常有用。您可以使用 F4 和 ⇧F4 (Windows, Linux Shift+F4) 来浏览结果,而无需将手从键盘上移开。
请告诉我们您的想法,我们将在下一次更新中改进体验。
扩展开发
归一化扩展样本
位于vscode-extension-samples的VS Code扩展示例已更新以确保一致性。
每个扩展示例现在包括:
- 统一的编码风格和结构。
- 一个README文件,通过简短的动画解释示例的功能。
- 每个示例中使用的
vscodeAPI或贡献点的列表。
扩展打包
捆绑的扩展加载速度更快。因此,我们创建了一个示例,展示了如何webpack 扩展。
开发扩展而不需要发布者
为了简化初始扩展开发,publisher字段已从Yeoman扩展生成器模板中移除。对于没有publisher标识符的扩展,VS Code现在会以undefined_publisher作为其发布者加载它们。然而,当尝试将扩展发布到市场时,vsce发布工具会警告您缺少有效的发布者。
活动终端API
提供访问活动终端的API,window.activeTerminal 和 window.onDidChangeActiveTerminal,现已稳定。
带有按钮的通知在超时后隐藏
如果您的扩展程序正在使用带有非模态选项和按钮的showInformationMessage或showWarningMessage API,请注意这些通知现在将在一定时间后隐藏。只有通过showErrorMessage触发并带有按钮的通知才会像以前一样保持打开状态。如果您必须立即从用户那里获取输入或需要突出显示消息,您仍然可以使用modal: true作为选项。这将弹出一个模态对话框,阻止用户执行任何操作,直到对话框被关闭。然而,我们不鼓励过度使用此选项,因为它会中断用户的操作。
自定义视图:展开显示的元素
您现在可以使用reveal API中的expand选项来展开一个元素以显示。它还支持通过传递层级数来递归展开子元素。
注意: 您最多只能扩展到3个层级。
/**
* Reveals the given element in the tree view.
* If the tree view is not visible then the tree view is shown and element is revealed.
*
* By default revealed element is selected.
* In order to not to select, set the option `select` to `false`.
* In order to focus, set the option `focus` to `true`.
* In order to expand the revealed element, set the option `expand` to `true`. To expand recursively set `expand` to the number of levels to expand.
* **NOTE:** You can expand only to 3 levels maximum.
*
* **NOTE:** [TreeDataProvider](#_TreeDataProvider) is required to implement [getParent](#_TreeDataProvider.getParent) method to access this API.
*/
reveal(element: T, options?: { select?: boolean, focus?: boolean, expand?: boolean | number }): Thenable<void>;
新主题颜色
有新的主题颜色:
tab.activeModifiedBorder: 在活动组中已修改(脏)活动标签顶部的边框。tab.inactiveModifiedBorder: 活动组中已修改(脏)非活动标签顶部的边框。tab.unfocusedActiveModifiedBorder: 未聚焦组中已修改(脏)活动选项卡顶部的边框。tab.unfocusedInactiveModifiedBorder: 未聚焦组中已修改(脏)非活动标签顶部的边框。editor.stackFrameHighlightBackground: 编辑器中顶部调试堆栈帧高亮的背景颜色。默认情况下,此颜色为黄色。editor.focusedStackFrameHighlightBackground: 编辑器中聚焦的调试堆栈帧高亮的背景颜色。默认情况下,此颜色为绿色。
Git 扩展 API 新增功能
Git 扩展 API 已更新,以暴露每个仓库的实际更改的详细信息。
此外,以下方法已被公开:
使用 Azure Pipelines 进行扩展 CI
我们已经更新了关于如何为您的扩展设置持续集成解决方案的文档,使用Azure Pipelines。新指南提供了一个配置,您可以在Windows、macOS和Linux上同时运行您的扩展测试。

提议的扩展API
每个里程碑都伴随着新的提议API,扩展作者可以尝试使用它们。我们一如既往地重视您的反馈。以下是您尝试提议API需要做的事情:
- 你必须使用Insiders,因为提议的API经常变化。
- 您必须在扩展的
package.json文件中包含这一行:"enableProposedApi": true。 - 将最新版本的vscode.proposed.d.ts文件复制到您的项目中。
请注意,您不能发布使用提议API的扩展。我们可能会在下一个版本中进行重大更改,并且我们从不希望破坏现有的扩展。
剪贴板 API
我们提出了一个访问剪贴板的API。它遵循即将推出的浏览器Clipboard API,目前允许读取和写入文本:
export interface Clipboard {
readText(): Thenable<string>;
writeText(value: string): Thenable<void>;
}
export namespace env {
const clipboard: Clipboard;
}
完成文本插入规则
有一个新提出的API用于修改完成项的插入行为。默认情况下,多行完成项会被“重新格式化”以匹配当前行的缩进。有时这种缩进是不需要的,新提出的API允许完成项关闭它。CompletionItemInsertTextRule是一个位掩码,其中有一个KeepWhitespace规则,完成项可以设置它。
自定义视图
全部折叠操作
您可以通过在创建TreeView时将showCollapseAll选项设置为true来向您的视图添加全部折叠操作。
/**
* Options for creating a [TreeView](#_TreeView]
*/
export interface TreeViewOptions<T> {
/**
* A data provider that provides tree data.
*/
treeDataProvider: TreeDataProvider<T>;
/**
* Whether to show collapse all action or not.
*/
showCollapseAll?: boolean;
}
namespace window {
export function createTreeView<T>(
viewId: string,
options: TreeViewOptions<T>
): TreeView<T>;
}
VS Code 提供了 全部折叠 功能,并为所有选择加入的视图显示相同的图标和位置。

TreeItem 标签高亮
你可以通过使用highlights选项提供范围来高亮显示TreeItem标签。由于这是一个提议的API,你必须使用TreeItem2来更新高亮显示。
/**
* Label describing the [Tree item](#_TreeItem)
*/
export interface TreeItemLabel {
/**
* A human-readable string describing the [Tree item](#_TreeItem).
*/
label: string;
/**
* Ranges in the label to highlight. A range is defined as a tuple of two number where the
* first is the inclusive start index and the second the exclusive end index
*/
highlights?: [number, number][];
}
export class TreeItem2 extends TreeItem {
/**
* Label describing this item. When `falsy`, it is derived from [resourceUri](#_TreeItem.resourceUri).
*/
label?: string | TreeItemLabel | /* for compilation */ any;
/**
* @param label Label describing this item
* @param collapsibleState [TreeItemCollapsibleState](#_TreeItemCollapsibleState) of the tree item. Default is [TreeItemCollapsibleState.None](#_TreeItemCollapsibleState.None)
*/
constructor(label: TreeItemLabel, collapsibleState?: TreeItemCollapsibleState);
}

隐藏源代码控制输入框
在SourceControlInputBox实例上有一个新提议的API属性,它将允许你隐藏位于源代码控制提供者UI视图顶部的输入框。
export interface SourceControlInputBox {
/**
* Controls whether the input box is visible (default is true`).
*/
visible: boolean;
}
签名帮助上下文
提议的 proposed SignatureHelpContext 为 SignatureHelpProviders 提供了关于为什么请求签名帮助的额外信息:
export interface SignatureHelpProvider {
provideSignatureHelp(
document: TextDocument,
position: Position,
token: CancellationToken,
context: SignatureHelpContext
): ProviderResult<SignatureHelp>;
}
SignatureHelpContext 包含:
- 什么操作触发了签名帮助
- 触发字符(如果有的话)
- 这是重新触发的吗?(签名帮助已经显示)
/**
* Contains additional information about the context in which a
* [signature help provider](#_SignatureHelpProvider.provideSignatureHelp) is triggered.
*/
export interface SignatureHelpContext {
/**
* Action that caused signature help to be requested.
*/
readonly triggerReason: SignatureHelpTriggerReason;
/**
* Character that caused signature help to be requested.
*
* This is `undefined` when signature help is not triggered by typing, such as when invoking signature help
* or when moving the cursor.
*/
readonly triggerCharacter?: string;
/**
* Whether or not signature help was previously showing when triggered.
*
* Retriggers occur when the signature help is already active and can be caused by typing a trigger character
* or by a cursor move.
*/
readonly isRetrigger: boolean;
}
/**
* How a [Signature provider](#_SignatureHelpProvider) was triggered
*/
export enum SignatureHelpTriggerReason {
/**
* Signature help was invoked manually by the user or by a command.
*/
Invoke = 1,
/**
* Signature help was triggered by a trigger character.
*/
TriggerCharacter = 2,
/**
* Signature help was triggered by the cursor moving or by the document content changing.
*/
ContentChange = 3
}
此外,该提案允许SignatureHelpProvider与一组triggerCharacters和一组不同的retriggerCharacters一起注册:
export interface SignatureHelpProviderMetadata {
readonly triggerCharacters: ReadonlyArray<string>;
readonly retriggerCharacters: ReadonlyArray<string>;
}
namespace languages {
export function registerSignatureHelpProvider(
selector: DocumentSelector,
provider: SignatureHelpProvider,
metadata: SignatureHelpProviderMetadata
): Disposable;
}
retriggerCharacters 仅在签名帮助已经显示时才会导致调用签名帮助提供程序。
对扩展的贡献
我们的团队维护或贡献了许多VS Code扩展。本月最值得注意的是:
Go
以下是使用 Go 1.11 中的新 Go 模块 时,Go 扩展现在支持的一些关键功能:
- 代码导航(转到定义、签名帮助、悬停时的符号信息)
- 代码补全
- 代码覆盖率
- 代码诊断
- 与包相关的命令,如Go: 添加导入和Go: 浏览包
更多详情,请阅读关于Visual Studio Code 中的 Go 模块支持的 wiki。
Go 扩展中的其他显著特性包括:
- Sourcegraph 的语言服务器现在也支持 Windows。
- 自动完成小部件现在显示建议符号的文档。按下 ⌃Space (Windows, Linux Ctrl+Space) 以展开/折叠自动完成小部件的详细信息部分。
- 现在在交叉编译时支持自动完成。这在您尝试Go 1.11中的新WebAssembly支持时特别有用。
- 调试视图的变量面板中现在提供了带有复制值、复制为表达式和添加到监视选项的上下文菜单。
- 在文件保存时仅对当前文件进行 lint 检查的选项。
TypeScript TSLint 插件
新的TypeScript TSLint 插件使 TSLint 成为 TypeScript 语言服务插件。这些插件可以在任何使用 TypeScript 语言服务的编辑器中工作,包括 VS Code、Visual Studio、Atom 和 Sublime Text。
我们还发布了一个扩展,它捆绑了TypeScript TSLint插件,这样您就不必在工作区中配置插件了。
GitHub 拉取请求
在这个里程碑中,我们致力于改进GitHub Pull Requests扩展。该扩展现在支持在编辑器和描述页面上编辑和删除评论,并对尚未提交的评论进行了更好的缓存。您可以在此处阅读该扩展的完整发布说明这里。
新文档
部署Python教程
有两个新的Python教程展示了如何使用VS Code部署Python Web应用程序。
调试技巧
有新的VS Code调试recipes用于PHP、Python和Ruby on Rails。
显著的修复
- 54214: 即使构建失败,vscode中的startDebugging方法仍然返回true
- 57289: 设置界面应在重新加载时记住其搜索内容
- 57321: 当设置搜索没有返回结果时,显示“清除搜索”和“清除过滤器”按钮
- 59305: 在 .code-workspace 文件中显示一个“打开工作区”按钮
- 59430: 无法再在Node内部文件中中断
- 61711: 所有断点都未验证
- 62085: 调试适配器未接收到PauseRequest
- 62346: 无法在调试会话初始化时取消
- 62354: Node 10.12 之后的远程调试问题
感谢您
最后但同样重要的是,向以下帮助使VS Code变得更好的人们表示衷心的感谢!:
对 vscode 的贡献:
- Agustín Rodríguez (@agurodriguez)
- Ahmed Atito (@atitoa93)
- Robert Balent (@balent)
- Anurag Banerjee (@banuragprdxn): 重新措辞 / 文本更改 PR #60996
- Brett Larney (@bblarney): 修复了文档中的拼写错误:'guardeed' -> 'guaranteed' PR #61186
- @benjamenhogben
- Alex Boyko (@BoykoAlex): 根据模式打开http/https的符号处理器 PR #61509
- Brendon Crawford (@brendoncrawford): 修复了在Fedora系统检查错误时的测试错误 PR #60917
- Chris Sinco (@c5inco): 将字体堆栈更新至最新的 PR #61419
- Emil Hessman (@ceh): 移除重复的switch case PR #59677
- Joshua (@cookiej91): 修复了注释中的拼写错误 PR #61909
- Daksh (@DakshMiglani)
- Dick van den Brink (@DickvdBrink): 修复了在Debian 8上安装时的警告 PR #59406
- Jonathan Dierksen (@dierksen): 使用 textmate/swift.tmbundle 进行 Swift 语法高亮。 PR #59639
- Douglas Gabriel (@douglasgabriel): 从 'build/monaco/api.ts' 中移除无用代码 PR #60024
- Frieder Bluemle (@friederbluemle): 修复markdown文件中的空白错误 PR #62299
- Gary Mathews (@garymathews): 修复资源管理器输入框对齐问题 PR #60539
- Guillaume Poussel (@gpoussel): 修复快速打开视图中的'null'工具提示 PR #62268
- Len Smith (@ignu): 为 macOS 添加 window.nonNativeFullscreen 选项 PR #55267
- Ilya Biryukov (@IlyaBiryukov)
- joan xie (@infinnie)
- Matt Q (@irrationalRock): Emmet 语法配置文件 tag_nl 不会产生额外的空格 PR #60108
- John Graham (@J-Graham): 在面包屑资源管理器中中键点击文件会打开… PR #59797
- Jason Bright (@jgbright): 在 .code-workspace 文件中的打开工作区按钮 PR #59586
- Kai Wood (@kaiwood): 修复代码注释中的拼写错误 PR #62282
- karan verma (@karanisverma): 启用预览描述更改 PR #61603
- Karl Schärlund (@kscharlund): 支持奇数缩进大小(修复 #17639) PR #59568
- Kyra (@kyranet): 代码片段: 添加 setInterval 代码片段 PR #61351
- Samuel Attard (@MarshallOfSound): 启用 Mojave 暗黑模式支持 PR #59742
- Maksym Dogadailo (@mdogadailo): 在没有分隔边框的情况下,分割视图中的项目不可拖动 PR #59830
- Josip Medved (@medo64): 修正minLength和maxLength验证消息 PR #61556
- Prem Kagrani (@michaelscof): 修复了拼写错误和一个单词 PR #61171
- Michael Kopf (@Michel73): 预填充快速打开 PR #55752
- Mine Starks (@minestarks): 支持配置 TypeScript 插件 PR #61756
- Matthew J. Clemente (@mjclemente): 修复 vscode 命名空间 API 中的损坏链接 PR #61651
- mnikn (@mnikn): 在弹出菜单中添加接受所有传入或当前更改的功能。 PR #53649
- Matthew Knox (@mrkno): 问题视图过滤器有严重延迟 PR #60080
- Niclas van Eyk (@NiclasvanEyk): 将来自 #57321 的操作添加到“未找到设置”消息中 PR #59739
- Nick Schonning (@nschonni)
- Olivier Truong (@oltruong): 拼写错误修复 PR #62196
- @orangegrove1955: 修正了注释中的拼写错误 PR #61216
- Karthikayan (@ParkourKarthik): 在requestItem中包含优先级并添加到请求队列 PR #60582
- Antoine (@Poke1650): 在注释中添加缺失的结束句号。 PR #61827
- Maxime Guerreiro (@PunKeel): 从文档中删除了重复的“the”。PR #59897
- Roni Hacohen (@ronihcohen): 添加Pascal case到片段格式选项 PR #59758
- Roy Tang (@roytang): 格式化选择的键盘快捷键将… PR #61206
- Ryan Clarke (@ryanclarke): 为面包屑符号树添加排序选项 PR #61420
- Sankt Petersbug (@sankt-petersbug): 修复Markdown预览错误地编码链接 PR #61530
- Prabhanjan S Koushik (@skprabhanjan)
- Tharun Jose (@tharunjose): 更新 README.md PR #60100
- Marcus Farkas (@ToothlessGear): 添加设置以允许禁用替换预览 PR #60153
- Stepan Usatyuk (@usaatyuk): 重新加载时持久化设置搜索 PR #59704
- Alexander (@usernamehw)
- Varan Shukla (@varanshukla): 修复了拼写错误 PR #61789
- Jeremy Shore (@w9jds)
- Konrad Borowski (@xfix): 在非内置语言列表末尾添加分号 PR #62284
- Literallie (@xxyy): 减少JSON模式解析问题的干扰性错误信息 PR #60219
- sk (@yeahok): 修复 R 图标大小 PR #59891
- Yisrael Veller (@YisraelV): 多行断点小部件 - 实现 #56521 PR #61859
- Richard Harlen (@zimbo73): 更新 src/vs/workbench/services/files/electron-browser/fileService.ts PR #62296
对 vscode-eslint 的贡献:
- Loune Lam (@loune): 添加了此行的抑制规则 / 文件快速操作的抑制规则 / 显示文档 PR #530
- Nguyen Long Nhat (@torn4dom4n): 更新变量参考 #553
- David Broder-Rodgers (@broder): 修复eslintServer中的一些拼写错误 PR #555
对vscode-languageserver-node的贡献:
- Vic Nightfall (@Victorious3): 异常中的拼写错误 PR #419
- Chris Wendt (@chrismwendt): 修复README中的示例 PR #428
- Thibaud Colas (@thibaudcolas): 更新lockfile中的版本以匹配package.json PR #431
对language-server-protocol的贡献:
- Tobias Bieniek (@Turbo87): 概述: 修复示例响应ID PR #575
- Jonathan Yee (@jonyeezs): 自述文件:使用逗号使列表更易读 PR #578
- Lewis Cowper (@lewiscowper): 将标题转换为超链接(网站) PR #577
- Remy Suen (@rcjsuen): 修正请求名称中的拼写错误 PR #589
- @fghzxm: 修复损坏的括号 PR #590
对vscode-html-languageservice的贡献:
对 vscode-css-languageservice 的贡献:
- Will Bender (@Ragnoroct): 在CSS选择器悬停时显示特异性。PR #129
- Richard Samuelson (@ricsam): 移除 package-lock.json PR #125
- Thomas Lent (@tlent)
对 vscode-json-languageservice 的贡献:
- Debasish Sahoo (@debck): 在readme中添加许可证徽章 PR #31
- Flo Edelmann (@FloEdelmann): 不要在数组和对象补全中包裹 PR #29
- Levertion (@Levertion): 使用 'if' 创建补全 PR #27
- Literallie (@xxyy)
对debug-adapter-protocol的贡献:
- Igor Kulaychuk (@ayuckhulk): 将 NetCoreDbg 添加到调试适配器协议实现者列表 PR #9
- Mario Loriedo (@l0rd): 将Theia添加到开发工具中 PR #10
- Sven Efftinge (@svenefftinge): Theia 由 Eclipse 社区维护 PR #11
对vscode-debugadapter-node的贡献:
对vscode-chrome-debug-core的贡献:
对 vscode-generator-code 的贡献:
- Diogo Simões (@s1moe2): 添加了在安装依赖项的模板中选择 npm/yarn 的选项 PR #133
- Randy (@TheQwerty): 修复拼写错误:commmand -> command PR #140
对 vscode-vsce 的贡献:
- Fabio Spampinato (@fabiospampinato): 添加了对
VSCE_IGNORE_KEYWORDS_LENGTH环境变量的支持 PR #298
对vscode-extension-samples的贡献:
- Eunice Park (@eunicode): 添加README到theme-sample PR #115
对vscode-recipes的贡献:
- Alistair Chapman (@agc93): 添加调试Cake脚本的配方 PR #168
- Akshay Avinash (@akshay11298)
- @amiya-1998
- André Vargas (@andrevargas): 添加调试Gatsby.js的说明 PR #160
- Taylor (@ATaylor1181): 修复了Ruby On Rails Readme中的拼写错误 PR #153
- Calvin Wong (@calvwng): 澄清 launch.json 步骤 & 添加 Nuxt.js 调试链接 PR #147
- Cameo Langford (@cameo-myob): 更新了调试 Ruby on Rails 以修复拼写错误 PR #151
- Cody Condon (@codycc): 修复README中的拼写错误 PR #139
- @guymcmanusgithub: 清理了README文件前几段的语言… PR #154
- John Hinson (@jlhinson): 修复了Meteor配方中的几个语法和拼写问题。PR #133
- Kirk Clemons (@kcclemo): 各种语法更改。 PR #161
- Maddie Kreamer (@maddiekreamer): 拼写错误已修复 PR #167
- Nisaruj (@nisaruj): 修复一些拼写问题 PR #138
- Luiz Machado (@odahcam): 添加PHP的说明 PR #136
- Peter Blazejewicz (@peterblazejewicz): Angular cli 配方小改动 PR #134
- @qhieu45: 在README.md和launch.json中添加"skipFiles"选项 PR #164
- Robin Cher (@robincher): PR - 添加Mocha默认测试选项 PR #148
- Sam Warner (@sjwarner-bp): 更新 Docker-TpeScript README.md 的语法更改 PR #149
对inno-updater的贡献:
- @edawine: 修复 strings.rs 中的不完整错误信息 PR #4
- Isaac Whitfield (@whitfin): 在轮询退出时移除不必要的分配 PR #6
- Jared De La Cruz (@jareddlc): 使日志记录更加一致 PR #7
对localization的贡献:
Transifex VS Code 项目团队有近1400名成员,每月约有100名活跃贡献者。我们感谢您的贡献,无论是提供新的翻译、投票翻译,还是建议流程改进。
这是本次发布的贡献者快照。有关项目的详细信息,包括贡献者名单,请访问项目网站 https://aka.ms/vscodeloc。
- 波斯尼亚语: Dario Fuzinato.
- 保加利亚语: Любомир Василев.
- 加泰罗尼亚语: joanmiro pisa.
- 捷克语: Vít Staniček, Kryštof Černý, Michal Franc.
- 荷兰语: Gerald Versluis, Vincent Verbist.
- 英语(英国): 马修·约翰·奇塔姆,亚历山大·奥格尔维。
- 芬兰语: Petri Niinimäki, Feetu Nyrhinen.
- 法语: Antoine Griffard, Adrien Clerbois.
- 德语: J.M. Rütter, Volkmar Rigo.
- 希腊语: Dimitris Siakavelis, Christos Koutsiaris.
- 印地语: Ashwini Gupta, Bimal ., Brahma Dev, Rahul Bhammarker.
- 匈牙利语: Tar Dániel.
- 简体中文: Joel Yang, pluwen, Zijian Zhou, Simon Chan.
- 中文繁体: Duran Hsieh, Poy Chang, Alan Tsai, Kevin Yang, Winnie Lin.
- 印尼语: Rizki A. Wibowo, Laurensius Dede Suhardiman, Fahmi Irsyad khairi, Wildan Mubarok, G-RiNe Project, Pratikto Ariestyadi, Joshua Siagian, William Tantiono, Herman Prawiro, Febrian Setianto (Feber), Angger Rafi Akbar, Joseph Aditya P G, Oka bRionZ, rodin.
- 意大利语: Alessandro Alpi, Riccardo Cappello, Marco Dal Pino, Roberto Albano, Andrea Dottor, Luigi Bruno.
- 日语: 田島俊也、貫山雄一、梶浦智、尾崎義久。
- 卡纳达语: Sanjay !.
- 韩语: Kyunghee Ko, Junseong Jang.
- 立陶宛语: Martynas Jusys.
- 马拉雅拉姆语: Ajith S Punalur, Anand Chalakkal Jose Mohan, Kiren Paul.
- 挪威博克马尔语: Espen Klein Nilsen.
- 波兰语: Artur, Andrzej Supermocny, Jan Bońkowski, Mateusz Wyczawski, Warchlak.
- 葡萄牙语(巴西): Rodrigo Crespi, Roberto Fonseca, Danilo Dantas, Thiago Aragão, Thiago Moreira de Souza Arrais, Atílio Dadalto, Marcelo Fernandes, Douglas Heydt, Robson Cassiano, Lucas Miranda, Thiago Custodio.
- 葡萄牙语(葡萄牙): Diogo Barros, António Santos, Antonio Lourenco.
- 俄语: Ivan Kuzmenko, Roman Slauta, Michael Crane.
- 西班牙语: José M. Aguilar, Matias Menich, Alberto Poblacion, Daniel J. Pérez Nieto, Andrés Reyes Galgani.
- 泰米尔语: Nadar Solomon Sunder, Sarath Jasrin, Sakthi Raj, rajakvk, Avinash, ஜெகன் லங்கா சாமி துரை, Anand AV, Jeyanthinath Muthuram, Narayanan Singaram.
- 泰卢固语: Rama Chandu, Hari Jujjavarapu, Sai Pavan Koundinya Upadhyayula.
- 乌克兰语: Svitlana Galianova, Borys Lebeda, Dmytro Kyrychuk, Victor Kubrak, Volodymyr Holovka.
- 乌尔都语: Haseeb Anwer, Saqib Ameen, Ahmad Awais.
- 越南语: Thanh Phu, Daniel Nguyen, Nguyễn Nhật Tân, Hung Nguyen, Vuong.