尝试以扩展 VS Code 中的代理模式!

2019 年 4 月 (1.34 版)

下载: Windows: x64 | Mac: Intel | Linux 64 位: deb rpm tarball snap | 32 位: deb rpm tarball

欢迎来到 2019 年 4 月发布的 Visual Studio Code。在 4 月份,我们忙于发布 远程开发 扩展的预览版。这些扩展允许您通过 SSH 在远程计算机或虚拟机上、在适用于 Linux 的 Windows 子系统 (WSL) 中或在 Docker 容器内使用 VS Code。您可以阅读《使用 Visual Studio Code 进行远程开发》这篇博客文章以了解更多信息。

此版本中仍有许多我们希望您会喜欢的更新,以及许多社区贡献。

如果您想在线阅读这些发行说明,请访问 code.visualstudio.com 上的更新页面。

编辑器

稳定的 CodeLens

VS Code 现在会乐观地缓存 CodeLens 位置,并在切换编辑器后立即恢复它们。这解决了在编辑器之间切换时 CodeLens 行会略微移动的问题。

Stable CodeLens

语言

供应商前缀 CSS 属性值的排名降低

以短划线 '-' 为前缀的 CSS 属性值(例如 -moz-grid-ms-grid)现在在自动补全中排在 grid 之后。

调试

debug.showSubSessionsInToolBar

我们引入了设置 debug.showSubSessionsInToolBar,它控制调试子会话是否显示在调试工具栏中。当此设置为 false 时,子会话上的停止命令也会停止父会话。此设置默认为 false。

任务

终止所有任务

任务:终止任务 命令新增了一个选项,可在有多个任务运行时终止所有任务。如果您经常执行此操作,可以为带有 terminateAll 参数的命令创建键盘快捷方式。

{
  "key": "ctrl+k t",
  "command": "workbench.action.tasks.terminate",
  "args": "terminateAll"
}

自动显示问题面板

新的 revealProblems 任务属性允许您自动显示问题面板。属性值可以是 alwaysneveronProblem

{
  "version": "2.0.0",
  "tasks": [
    {
      "type": "npm",
      "script": "watch",
      "problemMatcher": "$tsc-watch",
      "isBackground": true,
      "presentation": {
        "reveal": "always",
        "revealProblems": "onProblem"
      }
    }
  ]
}

对扩展的贡献

预览:远程开发

注意: 远程开发扩展 需要 Visual Studio Code Insiders

Visual Studio Code 远程开发 允许您使用容器、远程计算机或 适用于 Linux 的 Windows 子系统 (WSL) 作为功能齐全的开发环境。

远程开发扩展包中的扩展在远程工作区的上下文中运行,而 VS Code 的使用体验与本地运行无异。

Vetur

Vetur 扩展现在为 Vue 模板插值区域内的 JavaScript 表达式提供了语义诊断、悬停信息、跳转到定义以及查找引用功能

Vetur JavaScript support in interpolations

您可以在 Vetur 文档中阅读有关此功能的更多信息。

其他改进包括内存使用量减少和导入路径补全。您可以在 Vetur 更改日志中了解更多信息。

扩展创作

多扩展调试

在此里程碑中,我们增加了同时调试多个扩展的支持。如果您正在开发一组紧密耦合或相互依赖的扩展,这将非常有用。

以前,此功能只能通过 VS Code 的命令行界面使用,现在参数 --extensionDevelopmentPath 可以多次指定。通常,--extensionDevelopmentPath 用于扩展的启动配置中。当开发多个扩展时,我们建议将各个扩展项目组合到一个多文件夹工作区中,并创建一个新的启动配置(存储在工作区的 .code-workspace 文件中),该配置为各个扩展使用多个 --extensionDevelopmentPath 参数。

这是一个包含 hello1hello2 两个扩展以及一个用于这两个扩展的启动配置的工作区 .code-workspace 文件示例。

{
  "folders": [{ "path": "hello1" }, { "path": "hello2" }],
  "launch": {
    "configurations": [
      {
        "type": "extensionHost",
        "request": "launch",
        "name": "Launch Two Extensions",
        "args": [
          "--extensionDevelopmentPath=${workspaceFolder:hello1}",
          "--extensionDevelopmentPath=${workspaceFolder:hello2}"
        ],
        "outFiles": [
          "${workspaceFolder:hello1}/out/**/*.js",
          "${workspaceFolder:hello2}/out/**/*.js"
        ]
      }
    ]
  }
}

请注意,在此版本中,无法通过组合各个扩展项目的 preLaunchTask 来创建一个同时构建这两个扩展的 preLaunchTask

以前始终可以通过 [链接名称](http://链接) 语法在通知消息中包含链接,但这仅适用于在浏览器中打开的链接。现在,您还可以使用 [链接名称](command:<命令 ID>) 语法从链接中调用命令。当用户点击链接时,将触发具有所提供标识符的命令。

您现在可以为通知中的链接添加标题,当用户将鼠标悬停在链接上时将显示该标题。语法是 [链接名称](链接 "<标题>")

建议的扩展 API

每个里程碑都附带新的提议 API,扩展作者可以试用它们。一如既往,我们渴望您的反馈。以下是试用提议 API 所需的操作:

  • 您必须使用 Insiders 版本,因为提议的 API 经常更改。
  • 您的扩展的 package.json 文件中必须包含以下行:"enableProposedApi": true
  • 将最新版本的 vscode.proposed.d.ts 文件复制到您的项目中。

请注意,您不能发布使用提议 API 的扩展。我们很可能会在下一个版本中进行破坏性更改,我们绝不希望破坏现有扩展。

vscode.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(),它在打开单个文件夹以及未命名或已保存的工作区时都有效。

机器特定设置

如果您有一些设置允许用户自定义可执行文件路径,并且这些路径需要限定在其运行的机器上,您现在可以将此类设置分类为 machine 范围。扩展作者在为 configuration 扩展点贡献时设置 scope 属性。机器特定设置只能为用户设置配置。

"configuration": {
  "title": "Git",
  "properties": {
   "git.path": {
      "type": [
        "string",
        "null"
      ],
      "markdownDescription": "Path and filename of the git executable.",
      "default": null,
      "scope": "machine"
    }
  }
}

工程

重写了本地文件系统的文件系统提供程序

扩展程序能够为自定义资源提供自己的文件系统实现(在此处阅读更多信息)。然而,VS Code 自身对本地文件的实现并未采用相同的扩展 API。这导致在处理本地文件资源时与来自扩展的资源存在细微差异。在过去两个里程碑中,我们重写了本地文件系统提供程序以使用扩展 API,以保持一致性。

新文档

Python Azure 函数

有一个新的《将 Python 部署到 Azure Functions》教程,介绍了如何创建和部署 Python 无服务器 Azure Functions。

杂项

语言服务器协议

语言服务器协议已提议支持以下新功能:

  • 选择范围:计算位置数组的选择范围。从客户端发送到服务器。
  • 调用层级:计算给定符号的调用层级。从客户端发送到服务器。
  • 进度:从服务器启动进度报告。从服务器发送到客户端。

新功能将在 vscode-languageclientvscode-languageserver npm 模块的后续版本中提供。

值得注意的修复

  • 48259: 资源管理器遵守文件系统提供程序的回收站功能
  • 68276: 调用堆栈“在断点处暂停”UI 不对长线程名可见
  • 69603: 终端窗口在 Mac OS 中崩溃
  • 72110: 调试控制台不必要地渲染换行符
  • 71737: 调试窗口中的滚动行为异常
  • 71588: 在资源管理器中显示文件时出错
  • 70492: “运行中的扩展”上的“报告问题”按钮导致数十个重复问题

感谢

最后但同样重要的是,衷心感谢!以下帮助使 VS Code 变得更好的各位:

我们问题跟踪的贡献。如果您想帮助我们管理传入的问题,请参阅我们的社区问题跟踪页面。

vscode 的贡献

vscode-css-languageservice 的贡献

vscode-html-languageservice 的贡献

node-jsonc-parser 的贡献

language-server-protocol 的贡献

vscode-languageserver-node 的贡献

vscode-eslint 的贡献

vscode-lsif-extension 的贡献

vscode-textmate 的贡献

vscode-recipes 的贡献

vscode-vsce 的贡献

localization 的贡献

有超过 800 名 Cloud + AI 本地化社区成员使用 Microsoft 本地化社区平台 (MLCP),其中约有 100 名活跃贡献者贡献于 Visual Studio Code。

我们感谢您的贡献,无论是提供新翻译、对翻译投票,还是提出流程改进建议。

以下是贡献者快照。有关项目详情(包括贡献者名单),请访问项目网站:https://aka.ms/vscodeloc

  • 波斯尼亚语: Ismar Bašanović。
  • 捷克语: Daniel Padrta, David Jareš, Jan Hajek, Jiří Hofman。
  • 丹麦语: Allan Kimmer Jensen, Thomas Larsen。
  • 荷兰语: Maxim Van Damme, Sven Klaasen。
  • 英语(英国): Martin Littlecott, Tobias Collier, William Wood, Giorgi Jambazishvili。
  • 法语: Antoine Griffard, Thierry DEMAN-BARCELÒ, Mohamed Sahbi, Steven Dugois, Michael VAUDIN。
  • 德语: Christof Opresnik。
  • 印地语: Abhirav Kushwaha, Pramit Das。
  • 简体中文: paul cheung, 斌 项, Fan Su, Justin Liu, Horie Yuan, 王文杰, 赵畅畅, anson zhang, Wang Debang, Pluwen, Yiting Zhu, Joel Yang, Michael Zhang, 擎 钟, 涛 徐, 少民 谈, 伟 全, panda small, Array Zhang, LI ZHAO。
  • 繁体中文: 謝政廷, 煾 雪。
  • 匈牙利语: Levente Hallai Seiler。
  • 印尼语: Laurensius Dede Suhardiman。
  • 意大利语: Alessandro Alpi, Luigi Bruno, Emanuele Meazzo, Marco Dal Pino。
  • 日语: EbXpJ6bp -, nh, Kyohei Uchida, Yoshihisa Ozaki, Seiji Momoto, Hasefumi, 迪人 熊本, Koichi Makino, Kyohei Moriyama, 美穂 山本, Aya Tokura。
  • 韩语: 형섭 이, Youngjae Kim, siin lee, Keunyop Lee。
  • 拉脱维亚语: Kaspars Bergs。
  • 立陶宛语: Augustas Grikšas。
  • 波兰语: Wojciech Maj, Marek Biedrzycki, Igor 05, Marcin Weksznejder, Szymon Seliga, Paweł Modrzejewski, ‎Michał Stojke, Artur Zdanowski。
  • 葡萄牙语(巴西): Alessandro Trovato, Judson Santiago, Roberto Fonseca, Marcelo Fernandes, Lucas Miranda, Ray Carneiro, Loiane Groner, Daniel Luna, Lucas Santos, Saymon Damásio。
  • 葡萄牙语(葡萄牙): Ana Rebelo, Pedro Teixeira, João Carvalho, Tiago Antunes。
  • 罗马尼亚语: Alexandru Staicu。
  • 俄语: Andrey Veselov, Дмитрий Кирьянов, nata kazakova, Валерий Батурин。
  • 西班牙语: Andy Gonzalez, Carlos Mendible, José María Aguilar, Alvaro Enrique Ruano。
  • 泰米尔语: Boopesh Kumar, Karunakaran Samayan, Merbin J Anselm。
  • 土耳其语: mehmetcan gun, Sinan Açar, S. Ferit Arslan。
  • 乌克兰语: Sviatoslav Ivaskiv, George Molchanyuk。
  • 越南语: Khôi Phạm, Spepirus Shouru, Việt Anh Nguyễn。