终端外观
Visual Studio Code 终端的外观可以进行广泛的自定义。
使用 Hack 字体以及带有 Nerd Font 符号的自定义 Starship 提示符的 Sapphire 主题
文本样式
可以使用以下设置自定义终端中的文本
- 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:定义光标的形状,可以是轮廓、块、线、下划线或无。
自定义选项卡
默认情况下,当有两个或更多终端时,终端选项卡会显示在终端视图的右侧,当只有一个终端时,会在视图标题中显示活动终端。
可见性
默认可见性旨在节省水平空间,但可能并不理想。 可以使用以下设置配置选项卡的呈现方式
- 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.defaultIcon 和 terminal.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
连字
可以使用 terminal.integrated.fontLigatures 设置启用终端连字,该功能允许将多个字符渲染为一个字符。此功能要求配置的 terminal.integrated.fontFamily 也支持连字。
GPU 加速
终端具有两种不同的渲染器,每种渲染器都有不同的优缺点
- WebGL 渲染器 - 真正的 GPU 加速。
- DOM 渲染器 - 速度较慢但兼容性很好的备用渲染器。
默认情况下,终端中启用由 WebGL 渲染器驱动的 GPU 加速。这有助于终端更快地工作并以高 FPS 显示,从而显著减少 CPU 花在渲染每个帧上的时间。
默认的 terminal.integrated.gpuAcceleration 的值为 "auto"
,它会尝试 WebGL 渲染器,如果失败,将回退到 DOM 渲染器。在 Linux VM、不支持 WebGL 的浏览器或驱动程序过时的计算机上,WebGL 可能无法正常工作。
自定义字形
启用GPU 加速后,自定义渲染而不是字体可以改进某些字符在终端中的显示方式。这些字符包括框线字符 (U+2500-U+257F
)、块元素 (U+2580-U+259F
) 和 Powerline 符号的子集 (U+E0B0-U+E0BF
)。这意味着配置的字体不需要支持这些字符,并且这些字符可以以像素完美的方式绘制并拉伸到整个单元格的大小。
以下是一些配置了自定义行高和字母间距的字符示例。请注意,由于使用了自定义字形,单元格之间没有间隙
可以通过设置 "terminal.integrated.customGlyphs": false
来禁用此功能。
自定义提示符
大多数 shell 允许对终端提示符进行广泛的自定义。这是通过在 VS Code 外部配置 shell 来完成的,通常是通过修改 $PS1
变量、设置 $PROMPT_COMMAND
或安装插件来完成的。
一些提示符,如 Starship 和 oh-my-posh,可以显示 git 状态等信息,并且可以与大多数 shell 一起使用,因此它们是入门的好选择。
常见问题
为什么我的终端显示一个多色三角形或一个黑色矩形?
在某些环境中,终端可能会出现 GPU 加速渲染问题。例如,您可能会看到一个大的多色三角形而不是文本。这通常是由驱动程序/VM 图形问题引起的,Chromium 中也会发生同样的情况。通过使用 --disable-gpu
标志启动 code
或使用设置 "terminal.integrated.gpuAcceleration": "off"
以避免在终端中使用画布,可以解决这些问题。有关更多信息,请参阅GPU 加速部分。
为什么终端中的颜色不正确?
最低对比度功能可能导致颜色无法按预期显示。可以使用以下设置禁用它
"terminal.integrated.minimumContrastRatio": 1
在 vscode#146406 中解释了为什么这是默认设置的背景。