終端機外觀
Visual Studio Code 終端機的外觀可以廣泛自訂。
具有自訂 Starship 提示字元的 Sapphire 佈景主題,使用字型 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:設定「粗體」文字的字型粗細。
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 加速。這有助於終端機運作更快並以高 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 中說明。