🚀 在 VS Code 中

終端機外觀

Visual Studio Code 終端機的外觀可以廣泛自訂。

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

使用字型 HackNerd 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 字型

Powerline 字型是特殊的修補字型,其中包含可用於終端機的其他字元。VS Code 的終端機會轉譯一些 Powerline 符號,而無需設定字型,但如果需要更多字形,請使用字型系列設定設定 Powerline 字型。Powerline 字型通常以 " for Powerline" 結尾,以下設定是如何設定已修補的 DejaVu Sans Mono 的範例

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

Nerd 字型的工作方式相同,通常具有 " NF" 尾碼,以下是如何設定 Hack 的 nerd 字型變體的範例

"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

連字

終端機連字允許將多個字元轉譯為一個字元。您可以透過設定 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 加速。這有助於終端機更快地工作並以高 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)。這表示設定的字型不需要支援這些字元,以及使字元繪製像素完美並延伸到整個儲存格的大小。

以下是一些具有自訂行高和字元間距設定的這些字元範例。請注意,由於自訂字形,儲存格之間沒有間隙

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 加速轉譯方面可能會遇到問題。例如,您可能會看到一個大的多色三角形而不是文字。這通常是由驅動程式/VM 圖形問題引起的,Chromium 中也會發生同樣的情況。透過使用 --disable-gpu 旗標啟動 code 或使用設定 "terminal.integrated.gpuAcceleration": "off" 來避免在終端機中使用畫布,可以解決這些問題。請參閱GPU 加速章節以取得更多資訊。

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

最小對比度功能可能會導致色彩無法如預期顯示。可以使用以下方式停用它

"terminal.integrated.minimumContrastRatio": 1

vscode#146406 中說明了為什麼這是預設值的背景資訊。