2019 年 4 月 (版本 1.34)
下载:Windows: x64 | Mac: Intel | Linux 64 位: deb rpm tarball snap | 32 位: deb rpm tarball
欢迎使用 Visual Studio Code 2019 年 4 月版本。在四月期间,我们忙于 远程开发 扩展的预览版发布。这些扩展允许你在远程机器或 VM 上通过 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
参数。
以下是一个包含两个扩展 hello1
和 hello2
以及一个用于这两个扩展的启动配置的示例工作区 .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:
scheme。
工作区文件位置的一个用途是调用 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。
杂项
语言服务器协议
语言服务器协议 已提议支持以下新功能:
- Selection ranges(选择范围):计算位置数组的选择范围。从客户端发送到服务器。
- Call hierarchy(调用层级):计算给定符号的调用层级。从客户端发送到服务器。
- Progress(进度):从服务器启动进度报告。从服务器发送到客户端。
新功能将在 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 配方中 "@,-,+" 着色 bug 修复的测试用例 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 的 knownSchemes 中添加
vscode:
URI 前缀 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 标志以禁用 webviews 中的平滑滚动 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
的贡献
超过 800 名 云 + 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。