https://code.visualstudio.com/updates/v1_75

本次更新看点速览

  • VSCode 正式支持多 Profiles,同一设备支持多套隔离配置,并支持导入导出,细节参见下文。

可访问性 (Accessibility)

  • diff 导航提升,转到上一个/下一个有音频指示是插入删除还是修改。被更改行的选中屏幕阅读器会播报。
  • 添加了一个命令 >Terminal: Focus Accessible Buffer⇧Tab),终端输出的内容集中到一个窗口中,然后,可以通过键盘上下键移动光标让屏幕阅读器指定位置的输出。
  • 添加了一个命令 >Terminal: Show Terminal Accessibility Help 类似于 Show Accessibility Help 将展示终端可访问性帮助。

    image

  • Workspace Trust 编辑器添加快捷键支持,可以通过 Ctrl/Cmd+EnterCtrl/Cmd+Shift+Enter 快捷键快速信任当期工作区目录、父目录。

    image

  • 改进了设置编辑器指示器上的拥有多个修改指示器的键盘导航

配置文件 (Profiles)

预览了几个月的 Profiles 特性正式上线到该稳定版。

过去,VSCode 只有一套全局配置,没有办法为某种开发场景目定制一套专有配置。其次,配置没法分享。

现在,通过 Porfiles 机制,可以针对不同场景进行不同的配置。可以使用其他人分享的配置,但不影响自己的配置。

Profiles 包含:设置(settings.json)、任务配置(tasks.json)、代码片段(snippets)、扩展程序(extensions)、UI 状态(globalState)。这些内容将以 profileName.code-profile 文件储存。该文件是一个 json 文件,格式类似如下:

{
    "name": "profileName",
    "settings": "",
    "tasks": "",
    "snippets": "",
    "extensions": "",
    "globalState": ""
}

可以通过左下角齿轮图标 -> 配置文件使用此功能。

  • 第一部分:选择一个 Profiles 并应用。
  • 显示内容 …: 打开当前 Profiles 的内容。
  • 创建配置文件:
    • 创建空配置文件 …:相当于打开刚安装的全新的干净的 VSCode。
    • 从当前配置文件创建…:fork 一份当前的配置文件,在该配置文件上的修改不会影响之前的配置。
  • Exports Profiles…:将配置文件导出到磁盘中或者直接发布到 github gist。
  • 导入配置文件…:将一份配置文件导入到 VSCode 中并使用他。

image

导出到 github gist 的配置文件,可以直接通过一个链接 vscode.dev 打开,并引导用户一键导入到本地 VSCode 中。

image

注意:当前版本,在 Remote 和 Github Codespaces 中,该功能存在问题,可以关注: issue #165247

工作台 (Workbench)

  • 提升多视图大小调整,在三个视图焦点位置,可以一次调整 3 个视图。

  • 提升网格布局。如果编辑器的宽度被调整到最小化,则在调整整个工作台或侧边栏的大小时,网格现在将保留该状态。在下面的短视频中,右侧最小化编辑器的宽度随着整个编辑器区域的扩展而保持不变。

  • 自定义布局命令 >Customize Layout,支持撤销操作。

    image

  • 面板标题上下文菜单支持配置对齐方式。

    image

  • 简化全局设置菜单(左下角齿轮)。

    image

  • 树查找历史,支持通过 上下键浏览查找历史。

  • 树查找支持连续匹配(点掉,波浪线放大镜图标)。

  • 通过 workbench.list.scrollByPage 配置,控制点击列表的滚动条(如资源管理器)上下方按页滚动(编辑有专门的配置 editor.scrollbar.scrollByPage)。

  • 通过 workbench.list.typeNavigationMode 配置,控制在列表页按键盘时,聚焦到匹配的项目。默认为 automatic,按任意键匹配,trigger 可以配置按下某个键后才进行匹配。

    {
        "key": "/",
        "command": "list.toggleKeyboardNavigation",
        "when": "listFocus"
    }
  • 打开大文件的确认进行提示,通过 workbench.editorLargeFileConfirmation 配置,控制大文件的 MB。默认为 10M。

    image

  • 文件 watcher 库支持 files.watcherExclude glob 模式,参见:FAQPR

  • 键盘快捷键编辑器提升。

    • 支持查看贡献该快捷键的扩展,通过 Source 列。

      image

    • 在扩展列表页设置菜单,支持查看当前扩展的快捷键。

      image

    • When 编辑支持只能提示。

      image

    • Ctrl+K 会显示所有以 Ctrl+K 开头的快捷键。

  • 通过 application.shellEnvironmentResolutionTimeout 配置项(仅限 macOS 和 Linux),配置 shell 环境解析超时(参见 FAQ)。

  • shell 环境解析时会添加 VSCODE_RESOLVING_ENVIRONMENT 环境变量。

  • 发行说明页添加一个选择框,快速配置不展示发行说明,对应的配置项为 update.showReleaseNotes

    image

编辑器 (Editor)

  • 新增 editor.suggest.selectionMode 配置项,控制是否选中建议列表的第一个。无论该配置是什么,建议列表都会显示。此外,通过快捷键触发的建议列表(cmd+i),本配置不生效。

    • "always" (默认) 总是选中第一个。
    • "never" 从不选中第一个,可以通过上下键选择。
    • "whenQuickSuggestion" 当建议列表是快速建议时,选中第一个。
    • "whenTriggerCharacter" 当建议列表是通过字符触发时,选中第一个。
  • CodeAction 列表现在支持滚动。

  • 编辑器中显示的颜色装饰器数量限制为 500。这是为了防止在打开包含大量颜色的文件时出现性能问题。现在可以通过 editor.colorDecoratorsLimit 设置配置此限制。

    image

  • 新增 >Go To Match... 命令,可以快速跳转到第 n 个匹配项。

    image

  • 重新设计的的内联建议工具栏。在类似 github Copilot 扩展中有更好的体验。新的配置项 "editor.inlineSuggest.showToolbar": "always" 可以配置内联建议工具栏总是可见。添加了 Cmd + 右/左箭头 按单词接收撤销建议。

    image

终端 (Terminal)

  • 新的默认快捷键。

    • 打开检测到的链接 - CTRL/CMD+SHIFT+O

      image

    • 转到最近的目录 - CTRL/CMD+G

      image

    • 将 CTRL+G 发送到 Shell - CTRL+ALT+G

    • 运行最近命令 - CTRL+ALT+R

      image

    • 在打开屏幕阅读器时,CTRL+ALT+R 变为发送 CTRL+R 到终端,。CTRL+R 变为打开最近命令。

  • 终端链接检测提升,细节参见:原文

  • 当终端位于编辑器区域时,拖动文件进入终端时同时按住 shift,文件名将发送到终端里面,而不是直接打开该文件。

    image

  • 不安全配置文件检测,参见:原文

  • 溢出菜单添加 clear 终端菜单,通过右击溢出菜单,可以将溢出菜单项显示出来。

    image image

  • 在 Windows 中,如果选中了文本,ctrl+c 将变为复制文本操作,同时取消选中的内容,因此第二次按 ctrl+c 将发送 SIGINT 信号给终端。

  • 通过 terminal.integrated.tabStopWidth 可以配置终端制表符展示长度。默认为 8。

  • 电力线渲染优化,参见:原文

  • 运行选中文本,如果选中多行,现在将作为单个输入输入到终端中。

    • Before

      image

    • After

      image

  • 终端快速修复支持 Pwsh Preview feedback providers,参加:原文

源代码版本控制 (Source Control)

  • 新增 >Git: Stash Staged 命令可以调用 Git 2.35 git stash --staged
  • 新增 Git: Delete Remote Tag 命令可以删除远端标签。
  • 当检测到当前打开的目录的父目录是 git 仓库时,VSCode 将不直接在源代码版本控制视图中打开,而是弹窗提示用户是否打开。可以通过 git.openRepositoryInParentFolders 配置恢复自动打开的行为。

    image

  • 当存在 git 操作未完成时,源代码版本控制视图的很多按钮将被禁用,以防止命令的冲突。

  • UI 提升,参见:原文

笔记本 (Notebook)

  • Kernel 选择器提升,参加:原文
  • 添加合并选择的 Cell 命令:>Join Selected Cells

    image

  • 渲染优化,参见:原文

  • 新的文档,参见:原文

调试 (Debugging)

  • 提升 Node.JS 启动性能,参见:原文

语言 (Languages)

  • JavaScript React 被重命名为 JavaScript JSX,TypeScript React 被重命名为 TypeScript JSX。因为 jsx 已经不仅仅被 React 使用。
  • Shell 语法高亮改为 better-shell-syntax

扩展 (Extensions)

  • VS 市场扩展签名,VSCode 市场会对现存的扩展进行签名。几个月后,VSCode 将禁止安装签名不一致的扩展,更多参见: 讨论
  • VSCode CLI 支持安装固定版本的扩展:code --install-extension {publisher}.{name}@{version},通过此方式安装的扩展,VSCode 将不会自动更新。
  • 配置同步将同步那些被固定版本的扩展的版本信息,这意味了,其他设备同步下来后仍然安装那个固定的版本,而不是新的版本。

贡献到扩展 (Contributions to extensions)

远程开发 (Remote Development)

详见: Remote Development release notes

  • Remote Tunnels,支持睡眠抑制配置,防止设备睡眠而断连。
    • VSCode 桌面版开启,配置 remote.tunnels.access.preventSleep 配置项为 true。
    • code 命令开启,添加 --no-sleep 标志。
  • Continue Working On(中文翻译为云更改,该功能细节参见前几版本 Changelog 或 文档)。

    • 支持同步本地创建的新分支。

    • vscode.dev 中支持通过 >Continue Working in New Local Clone 命令通过 vscode:// 连接快速拉起本地 VSCode 桌面版,并 clone 下来代码,并继续工作。

    • 在 VSCode 桌面版、vscode.dev、remote 中,点击远程指示器(左下角 >< 图标),菜单可以看到云同步的命令。

      image

    • 注意,如果更改内容过多(如包含图片视频等),云更改可能失败。

    • 目前,云更改处于实验阶段。自动云更改,需要通过 workbench.experimental.cloudChanges.autoStore 开启。

预览特性

  • 新增 Dark+ V2 和 Light+ V2 实验主题,比之前默认主题更加现代化。

    image

  • TypeScript 5.0 support

  • 命令面板添加常用部分,通过 workbench.commandPalette.experimental.suggestCommands 配置设置,更多参见:原文

扩展制作 (Extension authoring)

  • Comment thread state,参见:原文
  • 注册配置时,可以使用 ignoreSync 来禁用配置同步。
  • 遥感 API (TelemetryLogger)已冻结。

提案的 API (Proposed APIs)

参见:原文

工程 (Engineering)

参见:原文