參加你附近的 ,瞭解 VS Code 中的 AI 輔助開發。

終端外觀

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 提示符,使用帶有 Nerd Font 符號的 Hack 字型

文字樣式

終端中的文字可以透過以下設定進行自定義

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'"

終端游標

終端游標樣式以及是否閃爍可以透過以下設定進行自定義

自定義標籤頁

預設情況下,當有兩個或更多終端時,終端標籤頁會出現在終端檢視的右側,當只有一個終端時,活動終端會顯示在檢視標題中。

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

可見性

預設可見性旨在節省水平空間,但可能不盡如人意。標籤頁的顯示方式可以透過以下設定進行配置

標籤頁文字

每個標籤頁上的文字由以下設定決定

預設情況下,標題顯示 shell 檢測到的程序名稱。

其他終端通常將 shell 傳送的轉義序列作為標題顯示,這可以透過以下方式配置

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

以下是所有可用的變數

  • ${cwd}:終端的當前工作目錄。
  • ${cwdFolder}:終端的當前工作目錄,對於多根工作區或單根工作區中其值與初始工作目錄不同時顯示。在 Windows 上,僅當 shell 整合啟用時才會顯示。
  • ${workspaceFolder}:啟動終端的工作區。
  • ${workspaceFolderName}:啟動終端的工作區名稱。
  • ${local}:表示遠端工作區中的本地終端。
  • ${process}:終端程序的名稱。
  • ${progress}:由 OSC 9;4 序列報告的進度狀態。
  • ${separator}:一個條件分隔符 (-) ,僅當它被帶有值或靜態文字的變數包圍時才顯示。
  • ${sequence}:程序提供給終端的名稱。
  • ${task}:表示此終端與任務關聯。
  • ${shellType}:檢測到的 shell 型別。
  • ${shellCommand}:根據 shell 整合正在執行的命令。這也需要對檢測到的命令列有高度的信心,這在某些提示框架中可能無法正常工作。
  • ${shellPromptInput}:根據 shell 整合的 shell 完整提示輸入。

圖示

每個終端都有一個相關的圖示,由其終端配置檔案決定。預設圖示及其顏色(如果未在配置檔案中定義則使用)可以透過 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

連字

終端連字允許將多個字元渲染為一個字元。您可以透過配置 terminal.integrated.fontLigatures.enabled 設定在終端中啟用連字,前提是終端字體系列 (terminal.integrated.fontFamily) 支援它們。

Enabling ligatures will combine certain sets of characters into one, for example >= into the greater than or equals sign

字型功能設定

當啟用連字時,還可以設定詳細的字型功能設定列表,其格式與 font-feature-settings CSS 屬性相同。這讓您可以更精細地控制連字的渲染方式。例如,停用標準 calt 連字並啟用特定字型變體看起來像 "calt" off, "ss03"。有關字型支援的變體列表,請查閱字型文件。

回退連字

當字型支援連字但 VS Code 不支援解析該字型時,您可以停用GPU 加速或指定要手動連線以形成連字的字元序列列表。

預設情況下,回退連字是編碼中常用的連字列表。透過配置 terminal.integrated.fontLigatures.fallbackLigatures 設定來微調列表。例如

// Only use ligatures for `ff`, `fi` and `fl`
"terminal.integrated.fontLigatures.fallbackLigatures": [
    "ff",
    "fi",
    "fl"
]

GPU 加速

終端具有兩種不同的渲染器,每種都有不同的權衡

  • WebGL 渲染器 - 真正的 GPU 加速。
  • DOM 渲染器 - 一個備用渲染器,速度慢得多但相容性很好。

由 WebGL 渲染器驅動的 GPU 加速預設在終端中啟用。這透過顯著減少 CPU 渲染每幀的時間,幫助終端更快地工作並以高 FPS 顯示。

預設的 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 來停用。

重新縮放模糊寬度的字形

某些 Unicode 字元具有模糊的寬度,終端的後端和前端可能對其大小不一致。當啟用GPU 加速並且發生這種模糊性時,字形將水平重新縮放以適應單個單元格並防止重疊。

例如,下圖顯示了被壓縮到單個單元格中的羅馬數字字元

VIII and XII characters would be rescaled horizontally so as to not overlap with following characters. They feature a thinner stroke width when this happens due to the scaling

此功能可以透過將 terminal.integrated.rescaleOverlappingGlyphs 設定為 false 來停用,這將導致以下重疊渲染

When off, the VIII and XII characters may overlap the following characters

自定義你的提示符

大多數 shell 允許廣泛自定義終端提示符。這是透過在 VS Code 之外配置 shell 來完成的,通常透過修改 $PS1 變數、設定 $PROMPT_COMMAND 或安裝外掛。

Starshipoh-my-posh 等一些提示符會顯示 git 狀態等資訊,並且適用於大多數 shell,因此它們是入門時的不錯選擇。

常見問題

為什麼我的終端顯示多色三角形或黑色矩形?

在某些環境中,終端在 GPU 加速渲染方面可能會出現問題。例如,您可能會看到一個巨大的多色三角形而不是文字。這通常是由驅動程式/虛擬機器圖形問題引起的,在 Chromium 中也會發生同樣的情況。透過使用 --disable-gpu 標誌啟動 code 或將 terminal.integrated.gpuAcceleration 設定為 off 以避免在終端中使用 canvas 來解決這些問題。有關更多資訊,請參閱GPU 加速部分。

為什麼終端中的顏色不正確?

最小對比度功能可能導致顏色顯示不符合預期。可以透過以下方式停用它

"terminal.integrated.minimumContrastRatio": 1

有關此為何為預設值的原因在 vscode#146406 中有解釋。