URLhttps://learnscript.net/zh-hant/vscode/terminal/profiles/
    複製連結移至說明  範例

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

    閱讀 16:12·字數 4863·發佈 
    Youtube 頻道
    訂閱 375

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

    Visual Studio Code 終端機設定檔案

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

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

    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 可以自動識別目前系統中可用的命令列應用(殼層程式,shell),並擁有一些內建的終端機設定檔案。

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

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

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

    path 屬性

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

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

    source 屬性

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

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

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

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

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

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

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

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

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

    下面的終端機設定檔案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 終端機中的環境變數

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

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

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

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

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

    下面的終端機設定檔案CMD-variables,變更了環境變數OS並新增了環境變數OS_OTHER(可能需要重新啟動),啟動該終端機設定檔案對應的命令提示字元後,我們通過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!

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

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

    雖然我們在設定項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 終端機的名稱,圖示,色彩

    通過終端機設定檔案的屬性(設定項)iconcolor,可以設定終端機所啟動的命令列應用(殼層程式)的圖示和圖示的色彩。通過屬性overrideName可以設定是否將終端機所啟動的命令列應用的標題變更為終端機設定檔案的名稱,如果設定為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 終端機設定檔案

    通過設定項terminal.integrated.defaultProfile.<platform>platformlinuxwindowsosx之一),你可以為某個作業系統中的 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",
    }

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

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

    終端機問題

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

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

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

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

    移除 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

    講解影片

    VSCode 自訂新的終端機(設定檔案)·YouTube
    VSCode 為終端機新增啟動參數·YouTube
    VSCode 管理(新增、修改、刪除)終端機中的環境變數·YouTube
    VSCode 設定預設終端機(設定檔案)·YouTube
    VSCode 移除無用的終端機(設定檔案)·YouTube