終端外觀
Visual Studio Code 的終端外觀可以進行廣泛的自定義。
Sapphire 主題,自定義的 Starship 提示符,使用帶有 Nerd Font 符號的 Hack 字型
文字樣式
終端中的文字可以透過以下設定進行自定義
- 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:配置“粗體”文字的字重。
terminal.integrated.fontLigatures.*
:配置連字。
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}"
以下是所有可用的變數
${cwd}
:終端的當前工作目錄。${cwdFolder}
:終端的當前工作目錄,對於多根工作區或單根工作區中其值與初始工作目錄不同時顯示。在 Windows 上,僅當 shell 整合啟用時才會顯示。${workspaceFolder}
:啟動終端的工作區。${workspaceFolderName}
:啟動終端的工作區名稱。${local}
:表示遠端工作區中的本地終端。${process}
:終端程序的名稱。${progress}
:由 OSC9;4
序列報告的進度狀態。${separator}
:一個條件分隔符 (-) ,僅當它被帶有值或靜態文字的變數包圍時才顯示。${sequence}
:程序提供給終端的名稱。${task}
:表示此終端與任務關聯。${shellType}
:檢測到的 shell 型別。${shellCommand}
:根據 shell 整合正在執行的命令。這也需要對檢測到的命令列有高度的信心,這在某些提示框架中可能無法正常工作。${shellPromptInput}
:根據 shell 整合的 shell 完整提示輸入。
圖示
每個終端都有一個相關的圖示,由其終端配置檔案決定。預設圖示及其顏色(如果未在配置檔案中定義則使用)可以透過 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.enabled 設定在終端中啟用連字,前提是終端字體系列 (terminal.integrated.fontFamily) 支援它們。
字型功能設定
當啟用連字時,還可以設定詳細的字型功能設定列表,其格式與 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
)。這意味著配置的字型不需要支援這些字元,並且字元能夠完美地按畫素繪製並拉伸到整個單元格的大小。
以下是一些具有自定義行高和字間距配置的這些字元的示例。注意,由於自定義字形,單元格之間沒有間隙
此功能可以透過將 terminal.integrated.customGlyphs 設定為 false
來停用。
重新縮放模糊寬度的字形
某些 Unicode 字元具有模糊的寬度,終端的後端和前端可能對其大小不一致。當啟用GPU 加速並且發生這種模糊性時,字形將水平重新縮放以適應單個單元格並防止重疊。
例如,下圖顯示了被壓縮到單個單元格中的羅馬數字字元
此功能可以透過將 terminal.integrated.rescaleOverlappingGlyphs 設定為 false
來停用,這將導致以下重疊渲染
自定義你的提示符
大多數 shell 允許廣泛自定義終端提示符。這是透過在 VS Code 之外配置 shell 來完成的,通常透過修改 $PS1
變數、設定 $PROMPT_COMMAND
或安裝外掛。
Starship 和 oh-my-posh 等一些提示符會顯示 git 狀態等資訊,並且適用於大多數 shell,因此它們是入門時的不錯選擇。
常見問題
為什麼我的終端顯示多色三角形或黑色矩形?
在某些環境中,終端在 GPU 加速渲染方面可能會出現問題。例如,您可能會看到一個巨大的多色三角形而不是文字。這通常是由驅動程式/虛擬機器圖形問題引起的,在 Chromium 中也會發生同樣的情況。透過使用 --disable-gpu
標誌啟動 code
或將 terminal.integrated.gpuAcceleration 設定為 off
以避免在終端中使用 canvas 來解決這些問題。有關更多資訊,請參閱GPU 加速部分。
為什麼終端中的顏色不正確?
最小對比度功能可能導致顏色顯示不符合預期。可以透過以下方式停用它
"terminal.integrated.minimumContrastRatio": 1
有關此為何為預設值的原因在 vscode#146406 中有解釋。