Visual Studio Code 終端機設定檔案使用說明

閱讀 17:18·字數 5193·發佈 
Youtube 頻道
訂閱 133

本節所講述的“終端機設定檔案”並非包含所有 Visual Studio Code 終端機設定的檔案。

Visual Studio Code 終端機設定檔案

Visual Studio Code 終端機設定檔案並非通過單獨的檔案儲存,而是存在於 Visual Studio Code 設定檔案settings.json的設定項terminal.integrated.profiles.<platform>中,其中platform為作業系統,可以是linuxwindowsosx,這使得開發人員能夠針對不同的作業系統 Linux/Windows/macOS 來定製不同的 Visual Studio Code 終端機

Visual Studio Code 設定項terminal.integrated.profiles.<platform>是一個物件,包含了用於對應作業系統的 Visual Studio Code 終端機設定檔案,物件的屬性的名稱為終端機設定檔案的名稱,物件的屬性的值(也是一個物件)為終端機設定檔案的內容。

settings.json
{
	// Windows 系統中的終端機設定檔案
	"terminal.integrated.profiles.windows": {
		// 終端機設定檔案 A Shell
		"A Shell": {
			"path": "<殼層程式的路徑資訊>",
		},
	},
}

Visual Studio Code 內建終端機設定檔案

預設情況下,Visual Studio Code 工作區或使用者設定檔案settings.json可能並不包含設定項terminal.integrated.profiles.<platform>,但這並不影響 Visual Studio Code 終端機的正常使用,因為 Visual Studio Code 可以自動識別目前系統中可用的命令列應用(殼層程式,shell),並擁有一些內建的終端機設定檔案。

新增 Visual Studio Code 終端機設定檔案

在啟動某個新的命令列應用(殼層程式)時,如果 Visual Studio Code 未列出你所期望的命令列應用,那麽可以在 Visual Studio Code 設定檔案settings.json的設定項terminal.integrated.profiles.<platform>中新增新的屬性(設定項)來表示新的終端機設定檔案,並將終端機設定檔案指向目標命令列應用。

Visual Studio Code 終端機設定檔案在設定檔案settings.json中的表現形式同樣是物件,該物件擁有以下兩個重要的屬性(設定項)。

path 屬性

path可以是 Visual Studio Code 終端機設定檔案對應的命令列應用的路徑或別名,你需要確保 Visual Studio Code 或作業系統能夠根據path的值以及某些環境變數(比如PATH)找到目標命令列應用,否則,Visual Studio Code 可能不會在使用者介面中列出該終端機設定檔案。

屬性path也可以是一個包含多個指向命令列應用的路徑或別名的陣列,這些路徑或別名將按照先後順序用於尋找目標命令列應用。

source 屬性

如果未指定path,那麽可以設定source屬性,該屬性僅在設定項terminal.integrated.profiles.windows中有效,並且僅有兩個有效值PowerShellGit Bash,他們表示使用 Visual Studio Code 內建終端機設定檔案PowerShellGit Bash

雖然是使用 Visual Studio Code 內建終端機設定檔案,但你可以覆蓋某些屬性,比如,新增有效的path屬性來指定目標命令列應用。

下面的終端機設定檔案New PS,將采用 Visual Studio Code 內建終端機設定檔案PowerShell,並改寫其path屬性為cmd

settings.json
{
	// Windows 系統中的終端機設定檔案
	"terminal.integrated.profiles.windows": {
		// 終端機設定檔案 New PS
		"New PS": {
			// 采用內建的終端機設定檔案 PowerShell
			"source": "PowerShell",
			// 覆蓋 path 屬性,改為啟動 Windows 命令提示字元
			"path": "cmd",
		},
	},
}

為 Visual Studio Code 終端機新增啟動參數

通過 Visual Studio Code 終端機設定檔案的屬性(設定項)args,你可以為 Visual Studio Code 終端機所啟動的命令列應用(殼層程式)新增啟動參數,該屬性是一個陣列,每一個啟動參數(名稱)或參數值均對應了陣列中的一個元素。

不支援將 Visual Studio Code 終端機的啟動參數的名稱和值放入同一個字串中

對於 Visual Studio Code 終端機設定檔案的args屬性,不要將啟動參數的名稱和啟動參數的值放在同一個字串中,比如["-OutputFormat XML"],這可能導致 Visual Studio Code 終端機無法正常啟動命令列應用,正確的做法是將參數名稱和參數值分開,比如["-OutputFormat","XML"]

雖然 Visual Studio Code 終端機設定檔案的args屬性預期為陣列,但將其設定為單一字串也是可行的(在一定條件下),比如,"-OutputFormat XML"的效果可能與["-OutputFormat","XML"]相同。

下面的 Visual Studio Code 終端機設定檔案PS-parameters,為命令列應用 PowerShell 新增了啟動參數-OutputFormat,其值為XML

settings.json
{
	// Windows 系統中的終端機設定檔案
	"terminal.integrated.profiles.windows": {
		// 終端機設定檔案 PS-parameters
		"PS-parameters": {
			// 采用內建的終端機設定檔案 PowerShell
			"source": "PowerShell",
			// 為 PowerShell 新增啟動參數
			"args": [
				// 啟動參數 -OutputFormat,其值為 XML
				"-OutputFormat", "XML",
			],
		},
	},
}

管理 Visual Studio Code 終端機中的環境變數

Visual Studio Code 終端機設定檔案的屬性(設定項)env是一個物件,可用於管理 Visual Studio Code 終端機所啟動的命令列應用(殼層程式)中的環境變數,該物件的屬性的名稱是環境變數的名稱,屬性的值是環境變數的值。env屬性中包含的環境變數將被新增至命令列應用,或覆蓋命令列應用中的同名環境變數。如果你希望刪除命令列應用中原有的某個環境變數,則應在env中將其對應的屬性的值設定為null

可能需要重新啟動 Visual Studio Code 使修改後的終端機設定檔案的 env 屬性生效

如果你修改了 Visual Studio Code 終端機設定檔案的env屬性,比如,為命令列應用新增了新的環境變數或覆蓋了原有的環境變數,那麽這些修改對於已經開啟命令列應用是無效的,並且可能需要重新啟動 Visual Studio Code 才能使這些修改生效。

命令列應用可能不會完全支援 Visual Studio Code 終端機設定檔案的 env 屬性

需要指出的是,一些命令列應用可能無法完全支援通過 Visual Studio Code 終端機設定檔案的env屬性來管理環境變數,比如,一些命令列可能不支援通過env來新增環境變數。

下面的 Visual Studio Code 終端機設定檔案CMD-variables,變更了環境變數OS並新增了環境變數OS_OTHER(可能需要重新啟動 Visual Studio Code),啟動該終端機設定檔案對應的命令提示字元後,我們通過echo命令檢視環境變數OS以及OS_OTHER

settings.json
{
	// Windows 系統中的終端機設定檔案
	"terminal.integrated.profiles.windows": {
		// 終端機設定檔案 CMD-variables(可能需要重新啟動 Visual Studio Code)
		"CMD-variables": {
			// 啟動 Windows 命令提示字元
			"path": "cmd",
			"env": {
				// 變更已有的環境變數 OS
				"OS": "Hello world!",
				// 新增新的環境變數 OS_OTHER
				"OS_OTHER": "Hello other worlds!",
			}
		},
	},
}
# 命令提示字元
echo %OS%
Hello world!
echo %OS_OTHER%
Hello other worlds!

如何管理 Visual Studio Code 所有命令列應用中的環境變數?

通過 Visual Studio Code 設定項terminal.integrated.env.<platform>platformlinuxwindowsosx之一),你可以為指定作業系統中的所有命令列應用新增,刪除或變更環境變數。其具體使用方法與 Visual Studio Code 終端機設定檔案的env屬性類似,只不過,當terminal.integrated.env.<platform>env屬性包含相同的環境變數時,以env屬性為準。

雖然我們在 Visual Studio Code 設定項terminal.integrated.env.windows中刪除了環境變數OS,但終端機設定檔案CMD-override重新新增了他,啟動該終端機設定檔案對應的命令提示字元後,可通過echo命令檢視環境變數OS以及OS_OTHER

settings.json
{
	// 管理 Windows 中的命令列的環境變數
	"terminal.integrated.env.windows": {
		// 刪除已有的環境變數 OS
		"OS": null,
		// 新增新的環境變數 OS_OTHER
		"OS_OTHER": "Other worlds!",
	},
	// Windows 系統中的終端機設定檔案
	"terminal.integrated.profiles.windows": {
		// 終端機設定檔案 CMD-override(可能需要重新啟動 Visual Studio Code)
		"CMD-override": {
			// 啟動 Windows 命令提示字元
			"path": "cmd",
			"env": {
				// 重新新增已被刪除的環境變數 OS
				"OS": "Hello world!",
			}
		},
	},
}
# 命令提示字元
echo %OS%
Hello world!
echo %OS_OTHER%
Other worlds!

設定 Visual Studio Code 終端機的名稱,圖示,色彩

通過 Visual Studio Code 終端機設定檔案的屬性(設定項)iconcolor,可以設定 Visual Studio Code 終端機所啟動的命令列應用(殼層程式)的圖示和圖示的色彩。通過屬性overrideName可以設定是否將 Visual Studio Code 終端機所啟動的命令列應用的標題變更為終端機設定檔案的名稱,如果設定為true(預設為false),則標題為終端機設定檔案的名稱。

settings.json
{
	// Windows 系統中的終端機設定檔案
	"terminal.integrated.profiles.windows": {
		// 終端機設定檔案 PS-customized
		"PS-customized": {
			// 采用內建的終端機設定檔案 PowerShell
			"source": "PowerShell",
			// 將命令列應用的標題取代為終端機設定檔案的名稱 PS-customized
			"overrideName": true,
			// 設定終端機的圖示
			"icon": "calendar",
			// 設定終端機的圖示的色彩
			"color": "terminal.ansiGreen",
		},
	},
}

終端機,外觀和樣式

你可以僅改變 Visual Studio Code 終端機所啟動的某個具體命令列應用的名稱,圖示和色彩,具體請檢視變更 Visual Studio Code 終端機的名稱,圖示,色彩一段,或通過 Visual Studio Code 設定項指定命令列應用的預設名稱,說明,圖示和圖示色彩,具體請檢視自訂 Visual Studio Code 終端機索引標簽的預設名稱,說明,圖示,色彩一段。

設定預設的 Visual Studio Code 終端機設定檔案

通過 Visual Studio Code 設定項terminal.integrated.defaultProfile.<platform>platformlinuxwindowsosx之一),你可以為某個作業系統中的 Visual Studio Code 指定預設的終端機設定檔案,通常這意味著指定 Visual Studio Code 終端機預設啟動的命令列應用(或不同的啟動參數),該設定項的值可以是任意有效的 Visual Studio Code 終端機設定檔案的名稱。

如果忽略 Visual Studio Code 設定項terminal.integrated.defaultProfile.<platform>,或將其設定為null,那麽 Visual Studio Code 將嘗試在 Windows 系統中使用命令列應用 PowerShell,在 Linux/macOS 系統中使用由環境變數SHELL(區分大小寫)指定的命令列應用(殼層程式,shell)。

settings.json
{
	// 選擇 PS-customized 作為預設的終端機設定檔案
	"terminal.integrated.defaultProfile.windows": "PS-customized",
}

此外,在 Visual Studio Code 的命令選擇區中輸入並執行命令Terminal: Select Default Profile,或點選 Visual Studio Code 終端機面板右上角的加號按鈕旁邊的箭頭符號按鈕,然後選擇功能表項選取預設設定檔,同樣可以設定預設的 Visual Studio Code 終端機設定檔案,這將修改 Visual Studio Code 使用者設定檔案。

由於工作區設定檔案會覆蓋使用者設定檔案中的設定項,因此,如果你在工作區設定檔案中指定了 Visual Studio Code 預設終端機設定檔案,那麽以上操作可能不會達到預期效果。

終端機問題

設定用於自動化功能的 Visual Studio Code 終端機設定檔案

一般情況下,Visual Studio Code 的自動化功能(比如工作和偵錯功能)會使用預設的終端機設定檔案,並啟動對應的命令列應用(殼層程式),你可以通過 Visual Studio Code 設定項terminal.integrated.automationProfile.<platform>platformwindowslinuxosx之一)為自動化功能指定其所使用的終端機設定檔案。

Visual Studio Code 設定項terminal.integrated.automationProfile.<platform>不是表示終端機設定檔案的名稱的字串,而是表示終端機設定檔案的內容的物件,該物件可包含屬性pathargsenvoverrideNameiconcolor,但不包含屬性source,需要說明的是,某些屬性可能不會產生預期效果,比如iconcolor,他們可能無法改變命令列應用的圖示和圖示色彩。

settings.json
{
	// 為自動化功能設定終端機設定檔案
	"terminal.integrated.automationProfile.windows": {
		// 啟動 Windows 命令提示字元
		"path": "cmd",
		// 設定終端機的圖示的色彩(可能沒有效果)
		"color": "terminal.ansiRed",
	},
}

移除 Visual Studio Code 終端機設定檔案

如果你希望移除某個 Visual Studio Code 終端機設定檔案,那麽可以將其在設定項terminal.integrated.profiles.<platform>中對應的屬性的值設定為null

在下面的範例中,我們移除了終端機設定檔案Command Prompt

settings.json
{
	// Windows 系統中的終端機設定檔案
	"terminal.integrated.profiles.windows": {
		// 移除終端機設定檔案 Command Prompt
		"Command Prompt": null,
	},
}

程式碼

settings.json·codebeatme/vscode·GitHub

講解影片

如何將其他命令列應用/程式作為 Visual Studio Code 終端機?如何新增新的 Visual Studio Code 終端機設定檔案·YouTube
如何使用 Visual Studio Code 終端機設定檔案為終端機啟動的命令列應用/程式新增啟動參數·YouTube
如何使用 Visual Studio Code 設定檔案和終端機設定檔案管理(新增,修改,刪除)命令列應用中的環境變數·YouTube
如何設定預設的 Visual Studio Code 終端機,終端機設定檔案,命令列應用·YouTube
如何移除不需要的 Visual Studio Code 終端機,終端機設定檔案,命令列應用·YouTube