现已推出!阅读 10 月份的新功能和修复。

终端外观

Visual Studio Code 的终端外观可以进行广泛的自定义。

An example of a custom UI, using Powerline and Nerd Font symbols in the prompt and a custom workbench theme

Sapphire 主题,使用自定义的 Starship 提示符,并使用 Hack 字体和 Nerd Font 符号

文本样式

终端中的文本可以通过以下设置进行自定义

  • terminal.integrated.fontFamily: 要使用的字体系列,它采用 CSS 中 fontFamily 的格式。例如,"'Fira Code', monospace" 将配置 Fira Code 作为主要字体,并将 monospace 作为当它缺少字形时的备用字体。
  • terminal.integrated.fontSize: 更改终端中文本的字号。
  • terminal.integrated.letterSpacing: 以像素为单位配置字符之间的额外水平间距。
  • terminal.integrated.lineHeight: 将字符之间的额外垂直间距配置为常规行高的倍数。例如,1.1 将添加 10% 的额外垂直空间。
  • terminal.integrated.fontWeight: 配置“普通”文本的字体粗细。
  • terminal.integrated.fontWeightBold: 配置“粗体”文本的字体粗细。

Powerline 符号和 Nerd Fonts

Powerline 字体是经过特殊修补的字体,包含可在终端中使用的额外字符。VS Code 的终端 无需配置字体即可呈现一些 Powerline 符号,但如果需要更多字形,则可以使用字体系列设置配置 Powerline 字体。Powerline 字体通常以 " for Powerline" 结尾,以下设置是配置经过修补的 DejaVu Sans Mono 的示例

"editor.fontFamily": "'DejaVu Sans Mono for Powerline'"

Nerd Fonts 的工作原理相同,通常具有 " NF" 后缀,以下是配置 Hack 的 Nerd Fonts 变体的示例

"terminal.integrated.fontFamily": "'Hack NF'"

终端光标

可以通过以下设置自定义终端光标样式以及它是否闪烁

  • terminal.integrated.cursorStyle: 定义光标的形状,可以是块状、线状或下划线。
  • terminal.integrated.cursorWidth: 当光标样式设置为 line 时,光标的宽度(以像素为单位)。
  • terminal.integrated.cursorBlinking: 终端获得焦点时,光标是否应闪烁。
  • terminal.integrated.cursorStyleInactive: 定义光标的形状,可以是轮廓、块状、线状、下划线或无。

自定义选项卡

默认情况下,当有两个或多个终端时,终端选项卡会出现在终端视图的右侧,当只有一个终端时,会在视图标题中显示活动终端。

A blank terminal without tabs and then with tabs displayed for three terminals

可见性

默认可见性旨在节省水平空间,但这可能不理想。可以通过以下设置配置选项卡的呈现方式

  • terminal.integrated.tabs.hideCondition: 何时隐藏右侧的选项卡,设置为 "never" 以始终显示它们。
  • terminal.integrated.tabs.showActiveTerminal: 何时在终端视图标题中显示活动终端。
  • terminal.integrated.tabs.showActions: 何时在视图标题中显示活动终端的操作。
  • terminal.integrated.tabs.location: 选项卡应显示在终端的左侧还是右侧。
  • terminal.integrated.tabs.enabled: 是否使用选项卡,禁用后将显示原始下拉视图。

选项卡文本

每个选项卡上的文本由以下设置确定

  • terminal.integrated.tabs.title: 选项卡标题。
  • terminal.integrated.tabs.description: 显示在标题右侧的文本。
  • terminal.integrated.tabs.separator: 标题和描述之间的分隔符。

默认情况下,标题显示 Shell 检测到的进程名称。

其他终端通常会显示 Shell 发送的转义序列作为标题,这可以通过以下方式进行配置:

"terminal.integrated.tabs.title": "${sequence}"

图标

每个终端都有一个关联的图标,该图标由其 终端配置文件 确定。如果配置文件中未定义默认图标及其颜色,则可以使用 terminal.integrated.tabs.defaultIconterminal.integrated.tabs.defaultColor 设置进行配置。

状态

终端的“状态”(如果有)由出现在选项卡右侧的图标表示。一些状态涉及动画。如果动画让人分心,可以通过以下方式禁用动画:

"terminal.integrated.tabs.enableAnimation": false

可视铃

当终端的铃声触发时,会短暂显示一个黄色的铃声图标。这可以通过 terminal.integrated.enableBell 禁用,并可以通过 terminal.integrated.bellDuration 配置持续时间。

终端颜色

虽然终端能够显示真彩色,但程序通常使用 8 种 ANSI 颜色(黑色、红色、绿色、黄色、蓝色、洋红色、青色和白色)以及每种颜色的亮度变体。这些 ANSI 颜色由活动 颜色主题 确定,但也可以使用 workbench.colorCustomizations 设置与主题独立配置。

粗体文本是否使用正常的 ANSI 颜色或亮度变体可以通过 terminal.integrated.drawBoldTextInBrightColors 设置进行配置。

最小对比度

终端通常会出现对比度问题,因为它们与深色/浅色主题、ANSI 颜色或运行的 Shell/程序等存在冲突。

最小对比度功能通过增加或降低文本前景色亮度来解决此问题,直到达到 4.5:1 的对比度。

这样做的一个缺点是,彩色文本有时可能会失去一些饱和度。可以通过以下方式配置或禁用此功能,以获得原始颜色:

"terminal.integrated.minimumContrastRatio": 1

GPU 加速

终端具有两种不同的渲染器,每种渲染器都有不同的权衡

  • WebGL 渲染器 - 真正的 GPU 加速。
  • DOM 渲染器 - 速度慢得多的备用渲染器,但具有很好的兼容性。

默认情况下,终端通过 WebGL 渲染器启用由 GPU 加速。这有助于终端更快地工作并在高 FPS 下显示,因为 CPU 用于渲染每一帧的时间大大减少。

默认的 terminal.integrated.gpuAcceleration 值为 "auto",它会尝试使用 WebGL 渲染器,如果失败,则会回退到 DOM 渲染器。在 Linux 虚拟机、不支持 WebGL 的浏览器或具有过时驱动程序的机器上,WebGL 可能无法正常工作。

自定义字形

GPU 加速 启用时,自定义渲染(而不是字体)会提高某些字符在终端中的显示方式。这些字符包括框绘制字符 (U+2500-U+257F)、块元素 (U+2580-U+259F) 和一部分 Powerline 符号 (U+E0B0-U+E0BF)。这意味着配置的字体不需要支持这些字符,而且这些字符的绘制像素完美且拉伸到整个单元格的大小。

以下是这些字符的一些示例,这些示例配置了自定义行高和字母间距。请注意,由于自定义字形,单元格之间没有间隙

Box drawing, block characters and some Powerline symbols fill the entire cell in the terminal

可以通过设置 "terminal.integrated.customGlyphs": false 来禁用此功能。

自定义提示符

大多数 Shell 允许对终端提示符进行广泛的自定义。这可以通过在 VS Code 外部配置 Shell 来实现,通常是通过修改 $PS1 变量、设置 $PROMPT_COMMAND 或安装插件。

一些提示符,如 Starshipoh-my-posh,显示诸如 Git 状态之类的信息,并与大多数 Shell 一起使用,因此它们是开始使用时的不错的选择。

常见问题

为什么我的终端显示一个多色的三角形或一个黑色的矩形?

在某些环境中,终端的 GPU 加速渲染可能会出现问题。例如,您可能会看到一个大的彩色三角形,而不是文本。这通常是由驱动程序/虚拟机图形问题引起的,并且在 Chromium 中也会发生。通过使用 --disable-gpu 标志启动 code 或使用 "terminal.integrated.gpuAcceleration": "off" 设置来避免在终端中使用画布,以解决这些问题。有关更多信息,请参阅 GPU 加速 部分。

为什么终端中的颜色不正确?

最小对比度功能 可能会导致颜色无法按预期显示。它可以通过以下方式禁用:

"terminal.integrated.minimumContrastRatio": 1

为什么这是默认设置的背景信息已在 vscode#146406 中解释。