Visual Studio Code 1.49 稳定版发布

VS Code 1.49 发布了,此版本更新内容包括:

格式化修改后的文本  
对另一个项目进行贡献时,“保存时格式化”和“格式化文档”命令可能会导致不需要的更新,因为它们会格式化未更改的行。此行为可能导致大量的请求,这些请求难以审查,并且可能会影响到你不希望修改的代码。现在这个新功能可以帮助限制不必要的更改:

添加了新命令“格式化修改的行”,该命令仅允许格式化新行和更改的行
有一个新的设置 editor.formatOnSaveMode,它使“保存时格式化”仅适用于修改后的行
修改是由源代码控制提供程序定义的,例如,Git 检测到的更改,并且如果不更改源代码控制,则不会格式化任何修改过的行。编辑器左侧的 Quick Diff 指示器将提示格式化哪些行。



更改搜索和替换上的大小写  
前几个月的版本中,增加了对在编辑器中执行“查找/替换”时更改正则表达式匹配组大小写的支持。本月,新版本为整个工作区中的搜索/替换添加了相同的特性。这是通过修饰符 \u\U\l\L 完成的,其中 \u 和 \l 将大写/小写单个字符,而 \U 和 \L 将大写/小写匹配组的其余字符。

源代码控制 repo 视图  
重新引入了“源代码控制存储库”(Source Control Repositories)视图(以前称为“Source Control Providers”视图),以实现对哪些源代码控制存储库应在“源代码控制”视图中可见的更精细的控制。和以前一样,该视图支持多个选择,因此可以同时看到多个存储库。



过滤调试控制台输出
调试控制台现在支持过滤,用户可以更轻松地查找所需的输出或隐藏不相关的日志输出。过滤器还支持排除模式(例如,以感叹号 ! 开头的模式)。该过滤器仅适用于程序输出,不适用于用户运行的评估。像 VS Code 中的其他输入框一样,可以使用向上和向下箭头键在旧的过滤器输入之间导航。

在下面的示例中,将输出过滤为包含文本“http”,不包含文本“http”(使用过滤器 !http)和“Severity”的条目:



改进 JS 调试器 Auto Attach  
现在即使没有手动向其传递 --inspect 标志,自动附加(Auto Attach)也可以调试进程。启用“自动附加”后,默认情况下,VS Code 使用其“智能”模式调试 node_modules 文件夹之外的任何 Node.js 脚本以及诸如 mocha 和 ts-node 之类的一些常用“运行程序”工具。



TypeScript 可选链重构
使用新的转换为可选链重构功能可快速将表达式序列(例如 a && a.b && a.b.c() )转换为使用可选链: a?.b?.c()。只需选择一个表达式即可使用它:



许多较旧的代码库具有很多重复的空值检查,可以通过可选的链接简化这些检查。现在,自动化某些清理工作比以往任何时候都容易。

支持 JSDoc @deprecated 标记
VS Code 现在在 JavaScript 和 TypeScript 文件中支持 @deprecated JSDoc 标记。要将 API 标记为已弃用,只需添加 @deprecated JSDoc 注释:
 
Notebook UX 更新  
现在,扩展程序可以将自定义项目添加到单元格状态栏中,类似于 VS Code 状态栏。这些项目可以是触发命令的按钮,也可以是纯文本项目。

例如,GitHub issues notebook 扩展现在将 Open X results 命令作为状态栏项提供:



此版本中添加了一种新型的 diff 编辑器,用于查看 notebook 文档中的更改。传统的 notebook 以 JSON 格式存储,该格式易于解析,但对 diff 不起作用,因为文本文件上的大多数 diff 算法都是基于行的。

为了改善这种体验,新版本构建了一个增强的 diff 编辑器,该编辑器了解 notebook 文档和单元格的概念,以帮助用户快速识别哪些单元格内容或元数据已更改。