2019 年 4 月 (版本 1.34)
下载: Windows: x64 | Mac: Intel | Linux 64 位: deb rpm tarball snap | 32 位: deb rpm tarball
欢迎使用 2019 年 4 月发布的 Visual Studio Code。在 4 月份,我们忙于 Remote Development 扩展的预览版发布。这些扩展允许您通过 SSH 在远程机器或虚拟机上、在适用于 Linux 的 Windows 子系统 (WSL) 中或在 Docker 容器内使用 VS Code。您可以阅读Visual Studio Code 远程开发博客文章以了解更多信息。
此版本中仍有几项更新,以及许多社区贡献,我们希望您会喜欢。
如果您想在线阅读这些发行说明,请访问 code.visualstudio.com 上的更新页面。
编辑器
稳定的 CodeLens
VS Code 现在会乐观地缓存 CodeLens 位置,并在切换编辑器后立即恢复它们。这修复了切换编辑器时 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
任务属性允许您自动显示问题面板。属性值为 always
、never
和 onProblem
。
{
"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 文档中阅读有关此功能的更多信息。
其他改进包括减少内存使用和导入路径完成。您可以在 Vetur 更新日志中了解更多信息。
扩展创作
多扩展调试
在此里程碑中,我们增加了同时调试多个扩展的支持。如果您正在开发一组紧密耦合或相互依赖的扩展,这将非常有用。
以前,此功能仅通过 VS Code 的命令行界面提供,现在 --extensionDevelopmentPath
参数可以指定多次。通常 --extensionDevelopmentPath
用于扩展的启动配置中。当开发多个扩展时,我们建议将单个扩展项目组合到一个多文件夹工作区中,并创建一个新的启动配置(存储在工作区 .code-workspace
文件中),该配置对单个扩展使用多个 --extensionDevelopmentPath
参数。
以下是一个工作区 .code-workspace
文件的示例,其中包含两个扩展 hello1
和 hello2
,以及两个扩展的单个启动配置
{
"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 Functions
有一个新的 将 Python 部署到 Azure Functions 教程,描述了如何创建和部署 Python 无服务器 Azure Functions。
杂项
语言服务器协议
语言服务器协议已提议支持以下新功能
- 选择范围: 计算一组位置的选择范围。从客户端发送到服务器。
- 调用层次结构: 计算给定符号的调用层次结构。从客户端发送到服务器。
- 进度: 从服务器启动进度报告。从服务器发送到客户端。
新功能将在 vscode-languageclient
和 vscode-languageserver
npm 模块的下一版本中提供。
值得注意的修复
- 48259: 资源管理器尊重 FileSystemProvider 的垃圾桶功能
- 68276: 调用堆栈“在断点处暂停”UI 对长线程名称不可见
- 69603: Mac OS 中终端窗口崩溃
- 72110: 调试控制台渲染换行符不必要
- 71737: 调试窗口中的滚动行为异常
- 71588: 资源管理器中显示文件时出错
- 70492: “运行扩展”上的“报告问题”按钮导致数十个重复问题
感谢
最后但同样重要的是,衷心感谢!以下帮助使 VS Code 变得更好的各位:
我们问题跟踪的贡献。如果您想帮助我们管理传入的问题,请参阅我们的社区问题跟踪页面。
- John Murray (@gjsjohnmurray)
- Prabhanjan S Koushik (@skprabhanjan)
- Alexander (@usernamehw)
- Muhammed Emin TİFTİKÇİ (@jaqra)
- Carl Morris (@msftrncs)
对 vscode
的贡献
- @alpalla: 修复 #27041 PR #72015
- @BaluErtl: 大纲抽屉默认消息措辞不正确 PR #73214
- @cmchumak: 改进了在没有工作区的情况下运行任务时的消息 PR #71476
- Connor Shea (@connorshea): 在格式化程序下拉列表中将 extensionId 显示为描述 PR #71910
- Alexandr Fadeev (@fadeevab): 关于配方中 "@,-,+" 颜色化的 Makefile 测试用例的错误修复 PR #72265
- Nikita Shilnikov (@flash-gordon): 修复本地化键中的拼写错误 PR #72718
- Hung-Wei Hung (@hwhung0111): 修复 code-cli.bat 中的拼写错误 PR #73091
- Ian Sanders (@iansan5653): 在调试控制台中添加对 8 位和 24 位 ANSI 转义颜色代码的支持 PR #70935
- Muhammed Emin TİFTİKÇİ (@jaqra): 添加了名为“转换为标题大小写”的标题大小写转换命令。 PR #70990
- Jimi (Dimitris) Charalampidis (@JimiC): [主题] 修复重新加载时资源管理器箭头通知 PR #71855
- Jon Bockhorst (@jmbockhorst)
- Johannes Wikman (@jwikman): FindInFiles 转换为命令并接受参数 PR #71626
- Jiaxun Wei (@LeuisKen): 修复 #72187 PR #72194
- Luís Ferreira (@ljmf00): theme-monokai: 修复制表符缩进 PR #72269
- paul cheung (@paul-cheung): 修复拼写错误 PR #72334
- Evan Bovie (@phaseOne): 在 links.ts 中将
vscode:
URI 前缀添加到 knownSchemes PR #71416 - Raman (@ramank775): 修复“评论框问题 #71703” PR #71880
- Samuel Bronson (@SamB): json-language-features/CONTRIBUTING.md 修复 PR #73273
- @sebastianwitthus: 44146 自动显示问题面板 PR #71387
- Simon Siefke (@SimonSiefke): 修复拼写错误 PR #71564
- Prabhanjan S Koushik (@skprabhanjan): 修复 71570 恢复已删除文件的 markdown 预览时出错 PR #71762
- Tony Xia (@tony-xia)
- Alexander (@usernamehw): 添加 CLI 标志以禁用 webview 中的平滑滚动 PR #65422
- Vitaliy Mazurenko (@vitaliymaz)
- Waleed Ashraf (@WaleedAshraf): 忽略 LINE_COLON_PATTERN 中的尾随空格 PR #71985
- William Whittle (@whittlec): 添加 'qsh' 作为有效的 shellscript 第一行 PR #73231
- Keyi Xie (@xiekeyi98): 修复 build/ 中的拼写错误 PR #71977
- XTY (@xtydev): 解决 WSL 启动脚本中的回归 PR #72779
对 vscode-css-languageservice
的贡献
- Tony Xia (@tony-xia): 修复了一个小拼写错误 PR #151
对 vscode-html-languageservice
的贡献
- Liam Newman (@bitwiseman): 更新 js-beautify 到 1.9.1 PR #58
- Christian Oliff (@coliff): 修复属性拼写错误 PR #60
对 node-jsonc-parser
的贡献
- Tony Xia (@tony-xia): JavaScipt -> JavaScript PR #18
对 language-server-protocol
的贡献
- Danny Tuppeny (@DanTup): 添加客户端未能应用编辑的可选原因 PR #637
- Ben Mewburn (@bmewburn): 修复 lsif textDocument/definition 示例中的 id PR #725
对 vscode-languageserver-node
的贡献
- Igor Matuszewski (@Xanewok): 添加提议的 window/progress 扩展 PR #261
- Aleksey Kladov (@matklad): 调整 selectionRange API PR #474
- Ben Mewburn (@bmewburn): onImplementation 和 onTypeDefinition 可以返回 DefinitionLink[] PR #479
- Remy Suen (@rcjsuen): 修复一个小拼写错误 PR #482
对 vscode-eslint
的贡献
- Mike Martin (@mcmar): 澄清
changeProcessCWD
文档 PR #657 - Ilias Tsangaris (@ilias-t): PR #661
- Charles Stover (@CharlesStover): eslint.codeAction.disableRuleComment 的自动完成应插入 separateLine 而不是 newLine PR #674
对 vscode-lsif-extension
的贡献
- Chris Wendt (@chrismwendt): 修复顶级文件的文件系统查找 PR #9
对 vscode-textmate
的贡献
对 vscode-recipes
的贡献
- AJ Alves (@zerokol): 调试 rspec 文件中的一个特定情况 PR #207
对 vscode-vsce
的贡献
对 localization
的贡献
Microsoft Localization Community Platform (MLCP) 上有超过 800 名 Cloud + AI Localization 社区成员,其中约 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。