URLhttps://learnscript.net/zh/vscode/terminal/profiles/
    复制链接转到说明  示例

    Visual Studio Code 终端配置文件使用说明

    我被代码海扁署名-非商业-禁演绎
    阅读 16:21·字数 4907·发布 

    本节所讲述的“终端配置文件”并非包含所有 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 终端·Bilibili
    如何为 VSCode 终端添加启动参数·YouTube如何为 VSCode 终端添加启动参数·Bilibili
    如何管理 VSCode 终端的环境变量·YouTube如何管理 VSCode 终端的环境变量·Bilibili
    如何设置默认的 VSCode 终端·YouTube如何设置默认的 VSCode 终端·Bilibili
    如何移除无用的 VSCode 终端·YouTube如何移除无用的 VSCode 终端·Bilibili